POJ 3978 Primes(素数筛选法)

题目

简单的计算A,B之间有多少个素数

只是测试数据有是负的

//AC

//A和B之间有多少个素数
//数据可能有负的!!!

#include<string.h>
#include<stdio.h>
//素数筛选法
int pri[100000+10];//1 合数, 0 素数
void Prime()
{
    memset(pri,0,sizeof(pri));
    pri[1]=pri[0]=1;
    for(int i=2;i<50002;i++)
    {
        if(pri[i]==0)
            for(int j=i+i;j<100010;j=j+i)
                pri[j]=1;
    }
}
int main()
{
    int a,b;
    Prime();
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        if(a==-1&&b==-1)break;
        int ans=0;
        if(a<0)a=0;
        if(b<0)b=0;
        for(int i=a;i<=b;i++)
        {
            if(pri[i]==0)
                ans++;
        }
        printf("%d
",ans);
    }
    return 0;
}
View Code
//素数筛选法
int pri[100000+10];//1 合数, 0 素数
void Prime()
{
    memset(pri,0,sizeof(pri));
    pri[1]=pri[0]=1;
    for(int i=2;i<50002;i++)
    {
        if(pri[i]==0)
            for(int j=i+i;j<100010;j=j+i)
                pri[j]=1;
    }
}
素数筛选法
一道又一道,好高兴!
原文地址:https://www.cnblogs.com/laiba2004/p/3849590.html