C语言 素数判断

#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;
}

猜你喜欢

转载自blog.csdn.net/qq_53083744/article/details/129735931