蝈蝈煮茶
2019-09-11 21:41
#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;
}
你可以先把if(m==n)删掉,看运行结果就容易理解一点了
运行没有影响,但是对代码运行的理解是不一样的。for(表达式1;表达式2;表达式3),前面有流程图说明三个表达式运行的顺序。1.没有=情况下,意思是在除1与本身以为,不存在整除数,不会提前跳出形成n!=m的情况,因此会在n=m-1执行最后一次循环后,进行n++运算,再进行n<m判断,明确的是,在这里已经存在了n=m,所以跳出循环。2.你加了=号的情况,更利于理解成,在找到n=m前,没有找到其他整除数,最后找到了n=m。这里需要提醒的是,如果在后面会用到n的值,需要清晰的理解n=?
运行上没问题,没什么影响
首先你的程序写得很乱,我指的是格式,可读性很差。其次改为<=只是在for的判断条件中已经包含了=,所以在接下来的条件判断中可考虑省略相等管关系的判断
C语言入门
926206 学习 · 20797 问题
相似问题