题意:一个数看是否能用两个素数之差来表示;
把素数存在一个数组里;查遍所有素数;
#include"stdio.h"
#include"string.h"
#include"math.h"
#define N 1050000
int map[N];
int prime[N];
int main()
{
memset(prime,0,sizeof(prime));
int i,j,m,n,k,h;
prime[1]=prime[0]=1;
for(i=2;i<(int)sqrt(1.0*N);i++)
{
if(prime[i]==0)
for(j=i+i;j<N;j+=i)
prime[j]=1;
}
j=0;
for(i=2;i<N;i++)
{
if(prime[i]==0)
{
map[j]=i;
j++;
}
}
scanf("%d",&k);
while(k--)
{
scanf("%d",&n);
for(i=0;i<j;i++)
{
if(map[i]>n&&prime[map[i]-n]==0)
{
printf("%d %d\n",map[i],map[i]-n);
h=1;
break;
}
}
if(h==0)
printf("FAIL\n");
}
return 0;
}