一天蒜头君猜想,是不是所有的偶数(除了 22),都可以用两个质数相加得到呢?于是聪明的蒜头君就找你来验证了。
输入格式
第一行输入一个整数 tt 表示测试组数。
接下来 tt 行,每行一个整数 nn。
输出格式
输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。
数据范围
对于 30\%30% 的数据 1 \le t \le 10^31≤t≤103。
对于 60\%60% 的数据 1 \le t \le 10^51≤t≤105。
对于 100\%100% 的数据 1 \le t \le 10^6, 4 \le n \le 10^61≤t≤106,4≤n≤106,nn 为偶数。
样例输入复制
34820
样例输出复制
2 23 53 17 有毒,数据量大 还是用scanf和printf 不停超时
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 int a[100005];10 int valid[1000005];11 void init()12 {13 for(int i=2;i<=1000000;i++){14 valid[i]=1;15 }16 for(int i=1;i*i<=1000000;i++){17 if(valid[i]){18 for(int j=i*i;j<=1000000;j+=i) valid[j]=0;19 } 20 }21 }22 int main()23 {24 int t,x;25 scanf("%d",&t);26 init();27 while(t--){28 scanf("%d",&x);29 for(int i=2;;i++){30 if(valid[i]&&valid[x-i]){31 printf("%d %d\n",i,x-i);32 break;33 }34 }35 }36 return 0;37 }