POJ2689 素数筛选

来源:互联网 发布:python 文本挖掘技术 编辑:程序博客网 时间:2024/05/29 10:12
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>const int maxn=50000+10;using namespace std;int p[maxn],a[maxn],f[1000000+10],t=0;void prepare(){ int m=(int)sqrt(50000);for(int i=2;i<=m;i++)if(!p[i])for(int j=i*i;j<=50000;j+=i)p[j]=1;for(int i=2;i<=50000;i++)if(!p[i])a[++t]=i;}int main(){prepare();int L,U;while(scanf("%d%d",&L,&U)!=EOF){if(L<2)L=2;memset(f,0,sizeof(f));for(int i=1;i<=t;i++){int s=(L-1)/a[i]+1,t=U/a[i];if(s<2)s=2;for(int j=s;j<=t;j++)f[j*a[i]-L]=1;}int p=-1,max_ans=-1,min_ans=1000000000,x1,y1,x2,y2;          for(int i=0;i<=U-L;i++)          {              if(f[i]==0)              {                  if(p==-1){p=i;continue;}                  if(max_ans<i-p){max_ans=i-p;x1=p+L;y1=i+L;}                  if(min_ans>i-p){min_ans=i-p;x2=p+L;y2=i+L;}                  p=i;              }          }          if(max_ans==-1)cout<<"There are no adjacent primes."<<endl;          else cout<<x2<<","<<y2<<" are closest, "<<x1<<","<<y1<<" are most distant."<<endl;  }return 0;} 

0 0
原创粉丝点击