题目:
J. Justifying the Conjecture
time limit per test
1 second
memory limit per test
512 megabytes
input
standard input
output
standard output
The great mathematician DreamGrid proposes a conjecture, which states that:
Every positive integer can be expressed as the sum of a prime number and a composite number.
DreamGrid can’t justify his conjecture, so you are invited to write a program to verify it. Given a positive integer n
, find a prime number x and a composite number y such that x+y=n.
A prime number is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. Note that 1
is neither a prime number nor a composite number.
Input
The input contains multiple cases. The first line of the input contains a single integer T
(1≤T≤105
), the number of cases.
For each case, the only line of the input contains a single integer n
(1≤n≤109
).
Output
For each case, print two integers x
and y in a single line, where 1≤x,y<n. If there are multiple valid answers, you may print any of them. If there is no valid answer, print the integer −1
instead.
Example
Input
Copy
3
4
6
7
Output
Copy
-1
2 4
3 4
题意描述:
讲一个数分为质数和合数,不能分的输出-1;
Accept Code:
#include <iostream>
#include <math.h>
int prime(int n)
{
int i;
if(n==1)
return 1;
for(i=2; i<=(int)sqrt(n); i++)
{
if(n%i==0)
return 1;
}
return 0;
}
int main()
{
int i,j,k,n,m;
scanf("%d", &n);
while(n--)
{
scanf("%d", &m);
int t=1;
for(i=2; i<=m/2; i++)
{
if(prime(i)==0&&prime(m-i)==1)
{
printf("%d %d\n", i,m-i);
t=0;
break;
}
}
if(t)
printf("-1\n");
}
return 0;
}