就是, 当第一次父循环结束后,第二次进入子循环时还是用for中第一个赋值吗,还是用上次子循环后的值,如果是重新赋值的话,为什么还会出现m=n的情况呢,求大神搭救......
哦哦,懂了,你要清楚那个m,n的定义范围,m,n是定义的局部变量,它们的作用范围包括整第一个for循环,直到return.......整个流程是这样的:
第一次进入父循环,此时m=2,然后进入再进入子循环,n=2,这时if判断m是否能被n正除,如果能这m不为素数,这break跳出m=2的这个父循环,然后m++,再判断m=3的情况;如果不能整除,那很幸运,这个数就是我们要输出的素数,但是还要判断一下,只有当这个数等于除数的时候,这个时候它的所有情况(n<m)都已经判断完了,这个就是我们要输出的素数,及就为m=n这步代码。
总得来说,这个两个for嵌套的循环体,第一父循环就是让我们从0~50之间每个数去试探一下每个数,但怎么试探来判断这个当前的m是素数呢?然后子for循环则就是判断的方法,则让当前的m去被除这个n(n的范围为0<n<m),逐个去试探,然后找出满足条件的素数。
或许我有点啰嗦,但关于m=n的问题,例如,当m=3时,进入子循环,n=2,然后执行循环体里的内容后,加n++,这个时候n=3,但n不符合子循环体里的条件,则不执行子循环体里的内容,此时n=3咯~则n==m,怎么不可能出现m==n的情况呢?或许你for循环的这个流程或许不清楚吧~
for(1,2,3){代码},先执行1,然后判断2,若为真,则执行代码,然后3,然后再判断2,是否为真,为真,则执行代码,不为真,则代表这个for循环结束.........
大概就这些了,如果有什么问题的话,欢迎来问,加油哦!
for里面不是写了吗 j=2就是重新赋值了。
你假设m一个值,比如说m=7。
此时的m,也就是7,让他除以2
发现不能整除,那么n+1变成3
m一直除一直除,n一直+一直+,
除到终于有一个数可以被整除,这时m一看,嘿这不是它本身嘛,判断if(m == n)
是的话就printf一个素数出来了
可以附一下你思路中的伪代码吗?我阅读理解不是很好.........#滑稽