初学者关于判断质数代码的疑惑

int a=0;
printf("请输入一个数:");
scanf("请输入一个数:%d",&a);
int n=0;
int i=2;
while(i
if(a%i==0){
n=1;
break;
}else{
n=0;
}
i++;
}
if(n==1){
printf("这个数不是质数\n");
}else if(n==0){
printf("这个数是质数\n");
}
为什么编译出来每个数都说是质数啊……

题主的代码修改如下,供参考:


#include <stdio.h>
int main()
{
    int a=0;
    printf("请输入一个数:");
    scanf("%d",&a); //scanf("请输入一个数:%d",&a); 修改
    int n=0;
    int i=2;
    while(i<a){
        if(a%i==0){
           n=1;
           break;
        }
        //else{  这几行多余
        //   n=0;
        //}
        i++;
    }
    if(n==1 || a == 1){ //修改 排除 1
       printf("这个数不是质数\n");
    }else if(n==0){
       printf("这个数是质数\n");
    }
    return 0;
}

素数判断那个循环逻辑有问题,看这个
https://blog.csdn.net/weixin_64811333/article/details/124600822

你看看你的scanf都写了啥😂,改成scanf("%d",&a)

scanf只能%d或%c等等,不能加上其他的

#include <stdio.h>
#include <math.h>

int isPrime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if(n % i == 0) {
return 0;
}
}
return 1;
}

int main() {
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d\n", i);
}
}
return 0;
}
原文链接:https://blog.csdn.net/syzdev/article/details/104144223