#include <stdio.h>
int main() {
int num, i, count = 0;
printf("Please enter an integer:\n");
scanf("%d", &num);
for(i = 1; i <= num; i++) {
if(num % i == 0) {
count++;
}
}
if(count == 2) {
printf("%d is prime\n", num);
} else {
printf("%d is not prime\n", num);
}
return 0;
}
上述代码实现了判断某个数是否为素数的功能,但是还存在一些问题:
1、循环判断的范围应该是从2到num-1,而不是从1到num。
2、在判断计数器的值是否等于2时,可以使用更简洁的写法,即 if(count == 2) 改为 if(count != 2)。
3、输入的整数应该是正整数,因此应该添加输入的合法性检查,如果输入的是负数或零,应该提示用户重新输入。
修改后的代码:
#include <stdio.h>
int main() {
int num, i, count = 0;
printf("Please enter a positive integer:\n");
scanf("%d", &num);
while(num <= 0) {
printf("Invalid input, please enter a positive integer:\n");
scanf("%d", &num);
}
for(i = 2; i <= num-1; i++) {
if(num % i == 0) {
count++;
break;
}
}
if(count != 0) {
printf("%d is not a prime number\n", num);
} else {
printf("%d is a prime number\n", num);
}
return 0;
}