qq_慕姐8196170
2019-03-04 13:07
这个是这个题目的参考答案 我愚钝,还是没有看懂 希望大佬们能帮忙解惑 谢谢了
第一次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
我觉得应该是这样,上面的不对
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跳出循环
我也是刚学的新手如有不对之处请指出
C语言入门
926020 学习 · 20793 问题
相似问题