题意让求一段素数中间的几个素数 用素数筛法筛出范围内的素数然后确定一下就行了 注意题目中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; }