韓小俠的專欄 已遷移至lssea.com
阿新 • • 發佈:2019-02-01
題意讓求一段素數中間的幾個素數 用素數篩法篩出範圍內的素數然後確定一下就行了 注意題目中1也算作素數了 具體看程式碼
#include <iostream> #include<cstdio> #include<cstring> using namespace std; #define max 2000 bool isprime[max]; int prime[max],nprime; void getprime() { memset(isprime,1,sizeof(isprime)); isprime[1]=0; long long i,j; nprime=1; prime[1]=1; for(i=2; i<max; i++) { if(isprime[i]) prime[++nprime]=i; for(j=i*i; j<max; j+=i) isprime[j]=0; } } int main() { getprime(); int n,c,f=0; while(cin>>n>>c) { int s; if(f) cout<<endl; f=1; for(s=1; prime[s]<=n; s++); s--; cout<<n<<" "<<c<<": "; if(2*c>=s) for(int i=1; i<=s; i++) if(i!=s) cout<<prime[i]<<" "; else cout<<prime[i]<<endl; else if(s%2) for(int i=s/2+1,j=-c+1; j<=c-1; j++) if(j!=c-1) cout<<prime[i+j]<<" "; else cout<<prime[i+j]<<endl; else if(s%2==0) for(int i=s/2,j=-c+1; j<=c; j++) if(j!=c) cout<<prime[i+j]<<" "; else cout<<prime[i+j]<<endl; } return 0; }