Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 45296 | Accepted: 17255 |
Description
Every even number greater than 4 can be
written as the sum of two odd prime numbers.
For example:
8 = 3 + 5. Both 3 and 5 are odd prime numbers.
20 = 3 + 17 = 7 + 13.
42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23.
Today it is still unproven whether the conjecture is right. (Oh wait, I have the proof of course, but it is too long to write it on the margin of this page.)
Anyway, your task is now to verify Goldbach's conjecture for all even numbers less than a million.
Input
Each test case consists of one even integer n with 6 <= n < 1000000.
Input will be terminated by a value of 0 for n.
Output
Sample Input
8 20 42 0
Sample Output
8 = 3 + 5 20 = 3 + 17 42 = 5 + 37
題意:輸入一個數,將其寫成倆個素數相加的形式。
很簡單的一道題,只要將第一次出現的符合條件的情況輸出即可。
代碼:
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
bool isodd(int x)
{
int y=sqrt(x+0.5);
for(int i=2;i<=y;i++)
{
if(x%i==0)
{
return false;
}
}
return true;
}
int main()
{
int n;
while(scanf("%d",&n)&&n!=0)
{
for(int i=3;i<=n-3;i++)
{
if(isodd(i)&&isodd(n-i))
{
printf("%d = %d + %d\n",n,i,n-i);
break;
}
}
}
return 0;
}