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

怎样看这个代码?什么时候才执行n++?

#include <stdio.h>
int main()
{
    int m, n;
    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);
 }
 return 0;   
}

正在回答

4 回答

当n的值小于m时,执行n++。当m为n的倍数时跳出循环,执行下一语句,判断m与n是否相等,相等即输出m(此时m为质数),若不等进入下一循环,m++;

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

慕娘6268485 提问者

那这样m,n的值不就一直一样了?
2018-08-17 回复 有任何疑惑可以回复我~
#2

慕函数6546506 回复 慕娘6268485 提问者

这个代码就是用来求50以内的质数,只有当m为质数时,n才会一直n++到与m相等从而m%n==0(此时达到质数条件,质数的因数只有1和它本身),否则则进入下一循环(m++);你可以给m分别取一个质数一个非质数(小一点的)带入程序,就很容易弄懂了。
2018-08-18 回复 有任何疑惑可以回复我~
#3

慕娘6268485 提问者 回复 慕函数6546506

是不是每一次子循环n都从2开始?
2018-08-18 回复 有任何疑惑可以回复我~
#4

慕函数6546506 回复 慕娘6268485 提问者

嗯,是的从2一直到m。
2018-08-18 回复 有任何疑惑可以回复我~
#5

慕娘6268485 提问者

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

蚕豆C 回复 慕娘6268485 提问者

++了
2018-08-28 回复 有任何疑惑可以回复我~
#7

蚕豆C 回复 慕娘6268485 提问者

++了
2018-08-28 回复 有任何疑惑可以回复我~
查看4条回复

可以自己试下~~~加了引号输出的是sum,不加就是显示计算完的值16IE6

0 回复 有任何疑惑可以回复我~
  1. 第5行外循环m先自加,因为是m++所以输出2(下一轮外循环就是把储存的3放上去);

  2. 然后n=2,n不小于m,n不自加,m%n==0,退出内循环;

  3. m==n=2输出2后循环结束,进入下一轮外循环;

  4. 第二轮外循环m=3,m++(输出3储存4);

  5. 内循环n=2;n<m;n++(先输出2发现余1);

  6. 然后内循环的第二次循环n自加1变成3%3==0,退出内循;

  7. m==n=3,输出3后循环结束,进入下一轮外循环;

  8. ......一直到m自加到50,n<m,n自加到50(输出49),循环彻底结束。


0 回复 有任何疑惑可以回复我~
  1. 第5行外循环m先自加,因为是m++所以输出2(下一轮外循环就是把储存的3放上去);

  2. 然后n=2,n不小于m,n不自加,m%n==0,退出内循环;

  3. m==n=2输出2后循环结束,进入下一轮外循环;

  4. 第二轮循外循环m=3,m++(输出3储存4);

  5. 内循环n=2;n<m;n++(先输出2发现余1);

  6. 然后内循环的第二次循环n自加1变成3%3==0),退出内循;

  7. m==n=3,输出3后循环结束,进入下一轮外循环;

  8. ......一直到m自加到50,n<m,n自加到50(输出49),循环彻底结束。


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

举报

0/150
提交
取消

怎样看这个代码?什么时候才执行n++?

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