题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4715
#include<stdio.h>
#include<math.h>
#include<string.h>
int num[580000];
bool prime[7000000];
int main()
{
int N,i,j,k;
memset(prime,true,sizeof(prime));
prime[0]=prime[1]=false;
for(i=2;i<=sqrt(7000000);i++){//帅选法
if(prime[i]){
for(int j=2*i;j<7000000;j+=i)
prime[j]=false;
}
}
k=0;
for(i=0;i<7000000;i++)
if(prime[i]) num[k++]=i;
int T; scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
if(n==0) printf("2 2\n");
if(n<0) N=-n;
else N=n;
int flag=0;
for(i=0;i<k;i++)
if(prime[num[i]+N]){
flag=1;
if(n>0)
printf("%d %d\n",num[i]+N,num[i]);
if(n<0) printf("%d %d\n",num[i],num[i]+N);
break;
}
if(flag==0) printf("FAIL\n");
}
return 0;
}