区间内的素数个数判定c语言(易懂)

#include<stdio.h>


int prime[1000000],is_prime[1000000];

int isprime(int n)
{
    int ans = 0;
    int i,j,k;
    for (i = 0; i <= n ;i++)
    {
        is_prime[i] = 1;
    }
    is_prime[0] = 0,is_prime[1] = 0;
    for (i = 2; i <= n; i++)
    {
        if (is_prime[i] )
        {
            prime[ans++] = i;
            for (j = i+i; j <= n; j+=i)
            {
                is_prime[j] = 0;
            }
        }
    }
    return ans;
}

int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",isprime(n));
    return 0;
}

这个是2到n之间的素数个数,如果是a到b的之间的素数个数,(偷个懒)就用2到a的素数个数减2到b的素数个数。但是需要判断一下a是否为素数,如果a为素数那么最后结果加一。

发布了20 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43457125/article/details/95352229