POJ 3978 Primes(素数筛选法)
简单的计算A,B之间有多少个素数
只是测试数据有是负的
//AC
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//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\n",ans); } return 0; }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//素数筛选法 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; } }
一道又一道,好高兴!