一天蒜頭君猜測,是否是全部的偶數(除了 22),均可以用兩個質數相加獲得呢?因而聰明的蒜頭君就找你來驗證了。ios
第一行輸入一個整數 tt 表示測試組數。ide
接下來 tt 行,每行一個整數 nn。測試
輸出兩個整數,由於答案可能有多個,全部要求輸出的這兩個整數是全部答案中字典序最小的。spa
對於 30\%30% 的數據 1 \le t \le 10^31≤t≤103。string
對於 60\%60% 的數據 1 \le t \le 10^51≤t≤105。it
對於 100\%100% 的數據 1 \le t \le 10^6, 4 \le n \le 10^61≤t≤106,4≤n≤106,nn 爲偶數。io
3 4 8 20
2 2 3 5 3 17
有毒,數據量大 仍是用scanf和printf 不停超時
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <algorithm> 6 #include <cmath> 7 #include <queue> 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 }