Rock劉
2017-08-13 20:39
#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,进入显示???这怎么可能?
我哪里的理解有误?求解答。
7是素数,但是当m=9,n=3的时候,m%n==0即m可以整除n,跳出内层循环,然后判断m==n?这时m!=n,也就不输出。
假设父循环m=7时,子循环n=2;n<m,子循环条件满足,一直循环,直到n==m==7时循环条件不满足,退出循环,此时走if句,这个解释能走通吗?那m=2也同理。
C语言入门
926210 学习 · 20797 问题
相似问题