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