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

求大神解答

#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(n == m)   //n循环结束后,如果m=n的话就输出m

            printf("%d\n", n);

}

return 0;    

}

n<=m,也是正确结果,为什么呢?不应该所有数都满足么?

正在回答

2 回答

以外循环m==5为例,当n==4时,执行循环体,接着执行n++得到n==5,此时

此时,对于n<m : 满足不了n<m,跳出内循环,执行if(n == m),说明5除了1以外只能被5整除,为素数;

          对于n<=m:满足n==m,执行内循环体,由于m%n=0,执行break,同样也跳出了内循环,执行if(n == m),说明5除了1以外只能被5整除,为素数;


综上所述,两种情况得到的结果都是相同的,且均是正确的,如有出错,感谢各位指正。

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

for(n=2; n<=m; n++)这里错了,n<m.不然 if(n == m)用来干嘛

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926027    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

求大神解答

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