睡觉前水一发
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX=1000;
bool isprime[MAX];
int prime[MAX],num_prime;
void getprime()
{
memset(prime,0,sizeof(prime));
memset(isprime,1,sizeof(isprime));
prime[0]=1;
num_prime=1;
for(int i=2;i<MAX;i++)
{
if(isprime[i]==1)
{
prime[num_prime++]=i;
for(int j=i*i;j<MAX;j+=i)
isprime[j]=0;
}
}
}
int main()
{
getprime();
int n,c;
while(~scanf("%d%d",&n,&c))
{
int sum=0;
for(int i=0;i<num_prime;i++)
{
if(prime[i]<=n)
sum++;
}
// cout<<sum<<endl;
cout<<n<<" "<<c<<":"<<" ";
if(sum%2==0)
{
if(sum/2-c>=0)
{
for(int i=sum/2-c;i<sum/2+c;i++)
cout<<prime[i]<<" ";
cout<<endl;
}
else
{
for(int i=0;i<sum;i++)
cout<<prime[i]<<" ";
cout<<endl;
}
}
else
{
if(sum/2-(2*c-2)/2>=0)
{
for(int i=sum/2-(2*c-2)/2;i<=sum/2+(2*c-2)/2;i++)
cout<<prime[i]<<" ";
cout<<endl;
}
else
{
for(int i=0;i<sum;i++)
cout<<prime[i]<<" ";
cout<<endl;
}
}
cout<<endl;
}
return 0;
}