POJ 3978 Primes(素数筛选法)

题目

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

只是测试数据有是负的

//AC

//A和B之间有多少个素数
//数据可能有负的!!! #include<string.h>
#include<stdio.h>
//素数筛选法
int pri[+];//1 合数, 0 素数
void Prime()
{
memset(pri,,sizeof(pri));
pri[]=pri[]=;
for(int i=;i<;i++)
{
if(pri[i]==)
for(int j=i+i;j<;j=j+i)
pri[j]=;
}
}
int main()
{
int a,b;
Prime();
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==-&&b==-)break;
int ans=;
if(a<)a=;
if(b<)b=;
for(int i=a;i<=b;i++)
{
if(pri[i]==)
ans++;
}
printf("%d\n",ans);
}
return ;
}
//素数筛选法
int pri[+];//1 合数, 0 素数
void Prime()
{
memset(pri,,sizeof(pri));
pri[]=pri[]=;
for(int i=;i<;i++)
{
if(pri[i]==)
for(int j=i+i;j<;j=j+i)
pri[j]=;
}
}

素数筛选法

上一篇:drawable 另外一种形式dimens.xml


下一篇:POJ - 3126 Prime Path 素数筛选+BFS