#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不是素数。
#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;
}