思路:
1.不存在输出FAIL的情况
2.素数打表 实现判断素数 和 查找第i个素数
3.二分查找素数表,从比x大的下一个素数now开始,判断这now-n是否素数
/*Code By Aquariuslt*/
/*HDU 4715 Difference Between Primes*/
#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
#include<string.h>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<limits.h>
#include<math.h>
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define FORD(i,a,b) for(int i=(a);i<=(b);i++)
#define REP(i,b) FOR(i,0,b)
#define CLR(a) memset(a,0,sizeof(a))
using namespace std;
#define maxn 100010
int pi;
int isprime[maxn],prime[maxn];
void init(){
CLR(isprime);
isprime[0]=1;
isprime[1]=1;
for(int i=2;i<maxn;i++){
for(int j=2;i*j<maxn;j++){
isprime[i*j]=1;
}
}
pi=0;
REP(i,maxn){
if(isprime[i]==0)prime[pi++]=i;
}
}
int main(){
init();
int t;
scanf("%d",&t);
REP(ti,t){
int n;
scanf("%d",&n);
int *s=upper_bound(prime,prime+pi,n);
while(1){
int now=*s;
if(isprime[now-n]==0){
printf("%d %d\n",now,now-n);
break;
}
s++;
}
}
return 0;
}