C语言for语句的嵌套中,第二个for语句中出现的整型变量为什么要放到语句中?

#include <stdio.h>

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

下面的不可以正常运行(我用的dev c++,只能得到2和3),为什么?

#include <stdio.h>

int main()
{
    int x;
    int isprime=1;
    
    int i;
    for(x=2;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;
}
 

 

 

这是原来的代码

在循环中, 每当你要重新考虑一个数是不是质数的时候, 你要重新设  isprime=1;  所以这句话要放在外循环的里面, 这样才能每次都重新赋值。