小玖so
2015-08-09 16:15
for的父循环中m=5的时候,自循环规定了n<m,那此时n最大只能是4,子循环执行完了,也没有满足m=n,为何结果还有5。另外我在子循环里面加上n<=m,结果也是一样的。哪个正确?
@Perona
首先了解一下素数的概念。素数是只能除以1和自身的数。
这里2个for循环,外面的for循环是遍历0-50这几个数的,里面的for是看m除了自己还能不能被整除。
外面的for从2开始算m是不是素数,n是除数,除数从2开始,如果m除以2余数为0,说明m能被2整除,则m不是素数,里面for循环break,继续算外面的for循环m+1。
第一次循环:m=2,
子循环:(因为这里n=2,n<m,不做循环),跳出,执行if(m == n) 输出2
第二次循环:m=3,
子循环:n=2,m%2=1
重点是(n++)这个,n++是什么呢?是自增1。本次循环中先取到n的值是2,但是循环结束后,n是不 是就自增了1,执行if(m == n) 输出3
第三次循环:m=4,
子循环:n=2,m%2=0,不符合。
第三次循环:m=5,
子循环:n=2,m%2=1,跳出
这里就是你想要知道的答应,当n循环到4的时候,跳出循环,n自增了1,执行if(m == n) 输出5。
......(接下来的循环自行脑补)
子循环为嘛要判n>m,因为素数是只能除以1和自身的数。那么除数和被除数相等是没有意义的。所以应该是n>m,而不是n>=m。
你看下,还有什么不懂的说说呗。
PS:你是第一个@我的人,我有种莫名的感动啊!太谢谢你,童鞋,你真可耐,么么哒~~~
明白了,受教
666
首先M=2 N=2 余数为0 跳出循环 然后 M++ M=3 N=2 余数为1不跳 N<M N++ N=3 余数为0则跳出循环 以此类推。这才是正解,按楼主的理解,9就不行了,9可以被3整除,不是素数。
话说一开始就被素数的概念给砸晕了。。。
看了老半天觉得应该得用模运算,就是没敢下手,其实就是两行代码的事。。。
除余运算,看来得重视了
多谢楼主,提点啦
判断这个,只判断第一个数字的,比如第一次循环的m=2 n=2那么这不就是相等情况了吗?你把整个运算顺序分析一下
C语言入门
926020 学习 · 20793 问题
相似问题