c语言初学者一枚,想请教一个fo循环的例子假设x=6

问题遇到的现象和发生背景 练习
问题相关代码,请勿粘贴截图

#include<stdio.h>
int main(){
int x;
int i=2;
int isPrime=1;//判断是否为素数,是为1,不是为0

printf("请输入一个正整数:\n");
scanf("%d",&x);
for(i=2;i<x;i++){
    if(x%i==0){
        isPrime=0;
    }
    }
    if(isPrime==1){
        printf("%d是素数",x); 
    }else {
    printf("%d不是素数",x); 
    }
    return 0;
}
运行结果及报错内容

无错误

我的解答思路和尝试过的方法

没想通

我想要达到的结果

希望的仔细的帮我讲讲细节,一点点分析,谢谢了

#include<stdio.h>
int main(){
    int x;
    int i=2;
    int isPrime=1;//判断是否为素数,是为1,不是为0
     
    printf("请输入一个正整数:\n");
    scanf("%d",&x);
    for(i=2;i<x;i++){
        if(x%i==0){
            isPrime=0;
        }
        }
        if(isPrime==1){
            printf("%d是素数",x); 
        }else {
        printf("%d不是素数",x); 
        }
        return 0;
    }

下面是我的理解,供参考:
i=2, 6%2=0,isPrime =0,
i=3,6%3=0,isPrime =0,
i=4,6%4=2,if里面的赋值不进行
i=5,6%5=1 ,if里面的赋值不进行
然后for循环结束,打印:6不是素数。


可以在for循环里面加入下面这句代码来观察各变量的变化: printf("i=%d, x=%d, %d%%%d=%d\n",i,x,x,i, (6%i)); 下面是对代码的注释:


#include<stdio.h>
int main(){
    int x;
    int i=2;
    int isPrime=1;//判断是否为素数,是为1,不是为0
     
    printf("请输入一个正整数:\n");
    scanf("%d",&x);  //获取一个需要判断是否为素数的数 
    for(i=2;i<x;i++){   //素数为不能被除1和它本身之外的数整除的正整数 
       printf("i=%d, x=%d, %d%%%d=%d\n",i,x,x,i, (6%i));
        if(x%i==0){  //如果在2和小于它本身1的数整除了,说明不是素数,把标志是否为素数的标志isPrime设置为0,说明不是素数 
            isPrime=0;
        }
    }
    
        if(isPrime==1){  //如果没有被除1和它本身之外的数整除说明是素数,打印结果 
            printf("%d是素数",x); 
        }else {  //打印不是素数 
        printf("%d不是素数",x); 
        }
        return 0;
    }
 

img