一天蒜头君猜想,是不是所有的偶数(除了 22),都可以用两个质数相加得到呢?于是聪明的蒜头君就找你来验证了。
输入格式
第一行输入一个整数 tt 表示测试组数。
接下来 tt 行,每行一个整数 nn。
输出格式
输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。
数据范围
对于 30%30% 的数据 1 \le t \le 10^31≤t≤10
3
。
对于 60%60% 的数据 1 \le t \le 10^51≤t≤10
5
。
对于 100%100% 的数据 1 \le t \le 10^6, 4 \le n \le 10^61≤t≤10
6
,4≤n≤10
6
,nn 为偶数。
样例输入 复制
3
4
8
20
样例输出 复制
2 2
3 5
3 17
题目来源
2019 蓝桥杯省赛 B 组模拟赛(一)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e6+5;
int isprime[maxn],n,t;
int main(){
scanf("%d",&t);
for(int i=2;i<=maxn;i++){
isprime[i]=1;
}
for(int i=1;i*i<=maxn;i++){
if(isprime[i]){
for(int j=i*i;j<=maxn;j+=i){
isprime[j]=0;
}
}
}
while(t--){
scanf("%d",&n);
for(int i=2;;i++){
if(isprime[i]&&isprime[n-i]){
printf("%d %d\n",i,n-i);
break;
}
}
}
return 0;
}