Problem Description
给一个偶数n(6≤n≤100000)。问n能否分解为两个质数a、b的和。
如不能,输出”Impossible”(输出不要加双引号)。
若能,则输出a、b。若有多组解,则输出a最小的解。
Input
第一行有一个正整数T(T≤50),代表数据组数。
接下来T组数据,每组数组一行,为一个偶数n(6≤n≤100000)。
Output
对于每一组数据,在一行里输出两个整数a、b,中间用空格隔开。
Sample Input
5
6
10
16
20
100000
Sample Output
3 3
3 7
3 13
3 17
11 99989
Author
Oyk
#include<stdio.h>
int number(int x)
{int h;
for(h=6;h<x;h++)
{
if(x%h==0)
break;
}
if(h==x)
return x;
else
return 0;
}
void check(int k)
{int x;
for(x=6;x<k;x++)
{
if(number(x)!=0&&number(k-x)!=0)
printf("%d %d",x,k-x);
else
printf("Impossible");
}
}
void main()
{int i,j,z,a[100];
scanf("%d",&i);
for(j=0;j<i;j++)
{
scanf("%d",&a[j]);
printf("\n");
}
for(z=0;j<i;j++)
{
check(a[z]);
}
}
}