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

第二次以后子循环是重新赋值吗

就是, 当第一次父循环结束后,第二次进入子循环时还是用for中第一个赋值吗,还是用上次子循环后的值,如果是重新赋值的话,为什么还会出现m=n的情况呢,求大神搭救......

正在回答

3 回答

哦哦,懂了,你要清楚那个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循环结束.........

大概就这些了,如果有什么问题的话,欢迎来问,加油哦!

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

闲默_ 提问者

谢谢谢谢,我慢慢理解一下
2018-08-17 回复 有任何疑惑可以回复我~
#2

miku酱的哲学之路 回复 闲默_ 提问者

有哪里不懂的话,可以问问,我基本都在线啃PHP......
2018-08-17 回复 有任何疑惑可以回复我~
#3

miku酱的哲学之路

你可以看一下你对n和m的作用域是否清楚.....
2018-08-17 回复 有任何疑惑可以回复我~
#4

闲默_ 提问者

非常感谢!
2018-08-17 回复 有任何疑惑可以回复我~
#5

再几程 回复 miku酱的哲学之路

第一次可以进入循环吗?不是m和n都等于2吗,不符合n<m啊,应该不进入循环吧
2018-11-11 回复 有任何疑惑可以回复我~
查看2条回复

for里面不是写了吗  j=2就是重新赋值了。

你假设m一个值,比如说m=7。

 此时的m,也就是7,让他除以2   

发现不能整除,那么n+1变成3

 m一直除一直除,n一直+一直+,

 除到终于有一个数可以被整除,这时m一看,嘿这不是它本身嘛,判断if(m == n) 

是的话就printf一个素数出来了 


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

闲默_ 提问者

谢谢吼,我再慢慢想想
2018-08-17 回复 有任何疑惑可以回复我~

可以附一下你思路中的伪代码吗?我阅读理解不是很好.........#滑稽

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

第二次以后子循环是重新赋值吗

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