要求详细说明!

来源:百度知道 编辑:UC知道 时间:2024/09/21 17:28:08
void main(){
int n,i;
for(n=2;n<=100;n++){
for(i=2;i<n;i++)
if(n%i==0) break;
if(i>=n) printf("\t%d",n);
}
这是求质素,那个for(i=2;i<n;i++)说i<n,但是if(i>=n) printf("\t%d",n);中i>=n这是怎么搞的

可以分析一下程序运行的过程,主要是第二个循环退出循环的条件,有两个:
1。当i>=n时
2。当i能整除n时
假设是第一种情况,那么必定有<n的整数都不能整除n,那么根据素数的定义,n就是素数了。这时打印输出n
假设是第二种情况,那么必有i<n,为什么呢?因为只有i<n,循环体中的这一段if(n%i==0) break;才会执行啊。所以呢,就不会打印n了。