Goldbach ' s conjecture
| Time Limit: 1000MS |
|
Memory Limit: 65536K |
| Total Submissions: 39435 |
|
Accepted: 15119 |
Description
In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the Followin G conjecture:
every even number greater than 4 can be
Written as the sum of the 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 are right. (Oh wait, I had the proof of course, but it was too long to write it on the "this page.")
Anyway, your task is now-Verify Goldbach ' s conjecture for all even numbers less than a million.
Input
The input would contain one or more test cases.
Each test case consists of one even an integer n with 6 <= N < 1000000.
Input would be terminated by a value of 0 for N.
Output
For each test case, print one line of the form n = a + B, where A and B is odd primes. Numbers and operators should is separated by exactly one blank like in the sample output below. If there is more than a pair of odd primes adding up to N, choose the pair where the difference b-a is maximized. If There is no such pair, the print a line saying "Goldbach ' s conjecture is wrong."
Sample Input
820420
Sample Output
8 = 3 + 520 = 3 + 1742 = 5 + PNS
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include < iostream> #include <algorithm> #include <set> #include <queue> #include <stack> #include < Map>using namespace Std;typedef Long long ll;int prime[1000010]={2,3,5};int k=3;int ip[1000010]={0};void is_prime () { int i,j; int flag=0; int gad=2; Ip[2]=1;ip[3]=1;ip[5]=1; for (I=7;i<=1000010;i+=gad) {flag=0; Gad=6-gad; for (j=0;prime[j]*prime[j]<=i;j++) {if (i%prime[j]==0) {flag=1; Break }} if (!flag) {prime[k++]=i; Ip[i]=1; }}}int Main () {int n,i,j; Is_prime (); while (~SCANF ("%d", &n)} {if (!n) break; int f=0; for (i=0;i<=k;i++) {j=n-prime[i]; if (Ip[j]) {f=1; Break }} if (!f) printf ("Goldbach ' s ConjectUre is wrong.\n "); else printf ("%d =%d +%d\n", n,prime[i],j); } return 0;}
POJ 2262-goldbach ' s conjecture (prime sieve)