问答详情
源自:4-14 结束语句之break语句

求大神解答

#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,也是正确结果,为什么呢?不应该所有数都满足么?

提问者:编程兴趣小白 2021-11-11 18:18

个回答

  • Y_H_
    2022-03-20 16:17:18

    以外循环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整除,为素数;


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

  • weixin_慕码人8394325
    2021-11-13 15:53:55

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