4 是素数?哪出问题了?
int i,num;_Bool flag = 1;
printf("请输入一个数:");
scanf("%d",&num);
for ( i = 2; i < num / 2; i++){
if(num % i ==0){
flag = 0;
}
}
if(flag){
printf("%d是一个素数!\n",num);
}
else{
printf("%d不是一个素数!\n",num);
}
return 0;
} 你在判断素数的循环中,条件应该是 i <= num / 2,而不是 i < num / 2。另外,处理输入数字为2或更小的情况时,程序可能会出错。以下是修正后的代码:
#include <stdio.h>
int main() {
int i, num;
_Bool flag = 1;
printf("请输入一个数:");
scanf("%d", &num);
if (num <= 1) {
flag = 0;
} else {
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
flag = 0;
break;
}
}
}
if (flag) {
printf("%d是一个素数!\n", num);
} else {
printf("%d不是一个素数!\n", num);
}
return 0;
}
这样修改后,可以正确判断一个数是否为素数。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 for 循环的条件 i < num / 2 应该改为 i <= num / 2,因为如果 num 是偶数且大于2,那么 num / 2 可能是一个因子,而你的循环条件会漏掉这个情况。
应该这样:#include <stdio.h>
int main() {
int i, num;
_Bool flag = 1;
printf("请输入一个数:");
scanf("%d", &num);
if (num <= 1) {
flag = 0;
} else {
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
flag = 0;
break;
}
}
}
if (flag) {
printf("%d是一个素数!\n", num);
} else {
printf("%d不是一个素数!\n", num);
}
return 0;
}
页:
[1]