为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们 请问这个 n 代表什么? 既然n<m 那m%n==不可能等于0啊 为什么break条件是 m%n==0?

54f5856b0001997d04210276.jpg

这个是这个题目的参考答案  我愚钝,还是没有看懂   希望大佬们能帮忙解惑 谢谢了


正在回答

2 回答

第一次m=2 n=2 里面的表达式是n=2;n<2;n++  所以只执行一次 2除以2 余0 直接跳出循环 此时n的值是2 m==n所以输出m=2

第二次m=3 n=2 里面的表达式是n=2;n<3;n++  两次循环 3除以2 余3 不成立 n++ 3除以3余0 跳出循环 而此时m=3 n=3所以输出m=3

第三次m=4 n=2 里面的表达式是n=2;n<4;n++  三次循环 4/2 余0 跳出循环 m此时是4 n是2就跳出循环了 m!=2 不输出4

第四次m=5 n=2 里面的表达式是n=2;n<5;n++  四次循环 5/2余5  5/3余5 5/4余5 5/5余0 跳出循环 此时m=5 n=5 输出5

第五次 m=6 n=2  6/2余0 break  6不等于2   不输出

第六次 m=7 n=2  一直循环到7/7才能break m=n输出7

第七次 m=8 n=2  8/2余0 m不等于n break 不输出

第八次 m=9 n=2  9/2余9  9/3余0 break 9不等于3 不输出

第九次 m=10 n=2 10/2余0 不输出

第10次 m=11 n=2   一直循环到11/11才能break

9 回复 有任何疑惑可以回复我~
#1

qq_慕姐8196170 提问者

谢谢大佬
2019-03-05 回复 有任何疑惑可以回复我~
#2

慕粉2113246 回复 qq_慕姐8196170 提问者

不对吧,第一次m=2,n=2,n<2,为假,不执行if(m%n==0)里的语句,直接跳出,执行if(m==n)的语句。
2019-03-09 回复 有任何疑惑可以回复我~
#3

慕侠1169626

回去再学一遍for语句吧
2019-03-16 回复 有任何疑惑可以回复我~
#4

慕侠1169626 回复 慕粉2113246

是的直接跳出
2019-03-16 回复 有任何疑惑可以回复我~
#5

无名指的星光 回复 慕粉2113246

我也发现了这个问题并且同意你说的,但为什么“第一次m=2,n=2,n<2,为假”,却能有“2”这样的运行结果呢?
2019-04-22 回复 有任何疑惑可以回复我~
#6

无名指的星光 回复 无名指的星光

哦对,忘了后面的if(m == n)
2019-04-22 回复 有任何疑惑可以回复我~
#7

蓝色的蓝莓

第2个循环不应该n<=m,才有你的那种解说吗?
2020-12-14 回复 有任何疑惑可以回复我~
查看4条回复

我觉得应该是这样,上面的不对

m=2时

n=2;n<2(为假,直接结束循环)执行下一步if(m==n)为真,输出m的值2

m=3时

n=2;n<3(为真);执行下一步if(m%n==0)(为假,不执行break),继续循环,n++(此时n=3),

n=3;n<3(为假,直接结束循环)执行下一步if(m==n)为真,输出m的值3

m=4时

n=2;n<4(为真);执行下一步if(m%n==0)(为真,执行break,跳出循环),执行下一步if(m==n)为假,不输出m的值

以此类推

因为任何数都能被1和本身整除,所以n的初始值为2,n<m

m除以n,比如12能被2,3,4,6整除,而当除到2的时候就已经知道不是质数了,没必要再循环下去了,所以用break跳出循环

我也是刚学的新手如有不对之处请指出

9 回复 有任何疑惑可以回复我~
#1

无名指的星光

这是我看得最明白的一个解释,谢谢这位朋友!
2019-04-22 回复 有任何疑惑可以回复我~
#2

qq_IFelse_uIQRTX 回复 无名指的星光

+1。
2019-05-31 回复 有任何疑惑可以回复我~
#3

绘梨衣的审判

优秀!同样是新手,为何你如此突出!
2019-09-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926206    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

大佬们 请问这个 n 代表什么? 既然n<m 那m%n==不可能等于0啊 为什么break条件是 m%n==0?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信