判断素数的个数哪里错了

img

img


用while循环,用循环的次数判断个数,帮忙看看哪里错了吧
用while循环,用循环的次数判断个数,帮忙看看哪里错了吧

这样改,供参考:

img


代码如下:

#include <stdio.h>
int main()
{
    int a = 2, i, count = 0;
    scanf("%d", &i);
    while (i > 1){
        a = 2;
        while (i % a) a++;
        if (a >= i) count++;
        i--;
    }
    printf("%d", count);
    return 0;
}

可以参考这个:

#include <stdio.h>

int is_prime(int num) {
    if (num < 2) {
        return 0;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}

int main() {
    int start, end, count = 0;
    printf("请输入范围起始值:");
    scanf("%d", &start);
    printf("请输入范围结束值:");
    scanf("%d", &end);

    for (int i = start; i <= end; i++) {
        if (is_prime(i)) {
            count++;
        }
    }

    printf("在范围 %d 到 %d 中有 %d 个素数。\n", start, end, count);
    return 0;
}


count定义的时候,没有给初始值0;
应该定义为int i,count=0;

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^