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

不是先判断再循环吗?我也不明白n<m的问题

for循环,执行表达式1,n=2,然后表达式2,n<m,否,不就跳出循环了吗?

正在回答

3 回答

那如果是4了 ? 

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

钟阿瞒i

m%n==0 如果m是4,n是2的话,不余0,继续循环
2017-07-31 回复 有任何疑惑可以回复我~
#2

慕斯卡5168711

按照数学, 2%4好像无法运算。为什么就成1了?
2017-08-02 回复 有任何疑惑可以回复我~
#3

centrifugeSIW 回复 慕斯卡5168711

2%4=2
2017-08-18 回复 有任何疑惑可以回复我~
#4

centrifugeSIW 回复 慕斯卡5168711

按照数学怎么没法算
2017-08-18 回复 有任何疑惑可以回复我~
#5

centrifugeSIW 回复 钟阿瞒i

大哥,4%2=2,余0,怎么就不余0啊??
2017-08-18 回复 有任何疑惑可以回复我~
查看2条回复

你随便把一个数字带入里面,比如7,第一个For循环判断成立,进入第二For循环,此时n=2,m=7,m再这个循环里面是恒定的,成立,继续循环,接着n不断加一,最后加到7,才判定不成立,跳出循环,此时m=7,n=7,因为如果m=n就要输出出来,所以7被输出出来了。你可以试试把其它数字带入,m和n的值写出来,更好理解这个程序

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

centrifugeSIW

如果m是n的倍数怎么办?比如说m=4,n不断加一,最后加到4,不满足n<m,跳出循环,因为n=m,所以输出4???/
2017-08-18 回复 有任何疑惑可以回复我~
#2

冷寒nn

当m=4时,4除2余数为0,终止当前循环了,接下来if语句判断,m不等于2的,所以,m=4不能够被输出出来的
2017-08-20 回复 有任何疑惑可以回复我~

    for(m=2; m<=50; m++)

    {

for(n=2; n<m; n++)

        {

            if(m%n==0)       //什么条件下跳出当前循环

            break;                 //这里应该退出当前循环了

}

        if(m == n)   //n循环结束后,如果m=n的话就输出m

            printf("%d  ", m);

}

这个m最开始的初始值为2然后进入子循环,发现不满足n<m这个条件跳过for(n=2; n<m; n++)这个循环,,满足if(m == n)打印出来这就是第一个素数2,然后m的自增1,继续循环


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

举报

0/150
提交
取消

不是先判断再循环吗?我也不明白n<m的问题

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