求范围内的素数,为什么素数输出不完整

img


求ab范围内的素数,为什么总是输出不完整,如1-5内只输出123

j = 0放在两个for循环之间,而且注意1不是素数

for(;a <= b;a++){
j = 0;
for(i =2;i < a;i++){
}
}

当发现某个非素数后,j就变成1了,if(j==0)永远不成立,需要在每次判断前(第二个for循环前)把j重新赋值为0

我看你代码里的问题还是蛮多的,直接给你一个可用的版本。


#include <stdio>
#include <math>

// 判断素数
int is_prime_number(int n)
{
    if (n < 2)
    {
        return 0; // 1不是素数
    }
    else if (n == 2)
    {
        return 1; // 最小的素数是2,也是唯一的偶素数
    }
    else
    {
        for(int i = 2; i*i<=n; i++)
        {
            if (n % i == 0)
            {
                return 0;
            }
        }
        return 1;
    }
}

int main()
{
    
    int a, b;
    scanf("%d %d", &a, &b);
    for(int i = a; i<=b; i++)
    {
        if (is_prime_number(i))
        {
            printf("%d ", i);
        }
    }
    return 0;
}