#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和n不是每次循环都相同的吗,
if(m == n) 为什么要有这一句?
希望有人能解释一下把,我没有看懂,很懵有点。
当m=3的时候,n只能循环一次,那么n只能=2,为什么可以得出m==n,难道n还可以自增,不是说for循环内++1和1++无区别吗?
#include <stdio.h>
int main()
{
int m, n;
for(m=2; m<=50; m++)
{ // 2<=50//向下进行
// 3<=50; m++; m=3
for(n=2; n<m; n++)
{ // 2<2退出循环 n++,n=3
//n又初始化为2,2<3 3<3,假
if( m%n==0 )
//3%2==1不等于0,if语句不成立 //什么条件下跳出当前循环
{
break;
}//这里应该退出当前循环了
}
if(m == n) //n循环结束后,如果m=n的话就输出m
// 2 ==2 //成立
// 3 = =3
printf("%d ", m);
//输出m=2
}
return 0;
}
break就是结束当前循环 ifm%n=0了之后,循环停止,自然跳出循环啊,我是这么理解的