题目链接
五校友谊赛终于开始了,话不多说A题吧。
从前从前有一个正整数n,你需要找到一个素数x和一个合数y使x+y=n成立,这样就可以双剑合并了。
素数是一个大于1的自然数,它的因数只有1与它自己本身。非素数且大于1的自然数称为合数。当然,1不是素数也不是合数。
Input
输入包含多个样例。输入的第一行包含一个整数T (1≤T≤10^5),样例数目。
对于每个样例,输入的每一行都包含一个整数n (1≤n≤10^9).
Output
对于每一种情况,打印两个整数。x和y中1≤x,y<n。
如果有多个有效答案,随便您打印任何一个。如果没有有效答案,则打印整数−1。
Example
Input
3
4
6
7
Output
-1
2 4
3 4
题解如下
#include<iostream>
using namespace std;
const int Len = 1e5 + 5;
int ar[Len];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n <= 5)
{
printf("%d\n",-1);continue;
}
if(n % 2 == 0)
printf("%d %d\n", 2, n - 2);
else
printf("%d %d\n", 3, n - 3);
}
return 0;
}