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

m%n==0 和取余以及取素数的问题

#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;    

}

假设父循环m=7时,子循环n=2;n<m,子循环条件满足,一直循环,直到n==m==7时循环条件不满足,退出循环,此时走if句,7%7==0,判定break生效,退出循环,那么同时满足后面的m==n 进入显示,正确吗?

同理,m=9,n=2,循环,直到m==n==9时,9%9=0,条件满足,break生效,并满足m==n,进入显示???这怎么可能?

我哪里的理解有误?求解答。

正在回答

2 回答

7是素数,但是当m=9,n=3的时候,m%n==0即m可以整除n,跳出内层循环,然后判断m==n?这时m!=n,也就不输出。

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

Rock劉 提问者

原来是这样,明白了,是我学愚了,没有考虑到m=9,n=3的情形
2017-08-14 回复 有任何疑惑可以回复我~

假设父循环m=7时,子循环n=2;n<m,子循环条件满足,一直循环,直到n==m==7时循环条件不满足,退出循环,此时走if句,这个解释能走通吗?那m=2也同理。

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

举报

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

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

进入课程

m%n==0 和取余以及取素数的问题

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