题意:给出一个偶数(不论正负),求出两个素数a,b,能够满足 a-b=x,素数在1e6以内。
只要用筛选法打出素数表,枚举查询下就行了。
注意,偶数有可能是负数,其实负数就是将它正数时的结果颠倒就行了。
代码:
#include<stdio.h>
#define max 1000005
int main()
{
int i,j;
int prime[max]={0,1};
int t;
for(i=2;i<max;i++)
{
if(!prime[i])
{
for(j=i;j<max;j=j+i)
prime[j]=i;
}
}
scanf("%d",&t);
while(t--)
{
int x,flag=1;
scanf("%d",&x);
if(x<0)
{
x=-x;
flag=0;
}
for(i=2;i<max;i++)
{
if(prime[i]==i)
if(prime[x+i]==x+i)
{
if(flag)
{
printf("%d %d\n",x+i,i);
break;
}
else
{
printf("%d %d\n",i,x+i);
break;
}
}
}
}
}