编程兴趣小白
2021-11-11 18:18
#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,也是正确结果,为什么呢?不应该所有数都满足么?
以外循环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整除,为素数;
综上所述,两种情况得到的结果都是相同的,且均是正确的,如有出错,感谢各位指正。
for(n=2; n<=m; n++)这里错了,n<m.不然 if(n == m)用来干嘛
C语言入门
926299 学习 · 20799 问题
相似问题