帮我解答一下,谢谢!
for的父循环中m=5的时候,自循环规定了n<m,那此时n最大只能是4,子循环执行完了,也没有满足m=n,为何结果还有5。另外我在子循环里面加上n<=m,结果也是一样的。哪个正确?
@Perona
2015-08-09
首先了解一下素数的概念。素数是只能除以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:你是第一个@我的人,我有种莫名的感动啊!太谢谢你,童鞋,你真可耐,么么哒~~~
举报