关于for循环的一个问题。

#include <stdio.h>
int main()
{
int x;

for (x=1;x<=100;x++){    
    
    int i=2;
    int isprime=1;
    
    for(i=2;i<x;i++){
        if(x%i==0)
            
            isprime=0;
        
        break;
        
    }
    if(isprime==1)
        printf("%d\n",x);
    
}
return 0;

}

分界线。

#include <stdio.h>
int main()
{
int x;

    int i=2;
    int isprime=1;
    
    for (x=1;x<=100;x++){    
    

    for(i=2;i<x;i++){
        if(x%i==0)
            
            isprime=0;
        
        break;
        
    }
    if(isprime==1)
        printf("%d\n",x);
    
}
return 0;

}
请问当我改变了第一个for的位置有什么区别,(第一个是正确的)。谢谢

因为每个数字都假设它是素数,在第二个循环内,判断它不是素数,才会把isprime改为0
所以每个数一开始都要置为1,所以isprime=1应该在第一层for循环里面,通过它来表示“假设一开始认为每个数都是素数”

第二段代码,在检测到一个偶数的时候,isprime永远就设置为0,后面基数检测不出来了

希丰展?使MD

第二个isprime只要一次变成0,就一直都是0