#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <math.h>
using namespace std;
 
int num[1000010];
vector<int> prime;
 
void eratos()
{
    for(int i = 2; i <= 1000000; i++)
    {
        num[i] = i;    
    }
    
    for(int i = 2; i <= 1000000; i++)
    {
        if(num[i] == 0)
        {
            continue;
        }
        
        else if(num[i] == i)
        {
            for(int j = i+i; j <= 1000000; j += i)
            {
                num[j] = 0;
            }    
        }
    }
}
 
int main(void)
{
//    freopen("B6588_input.txt", "r", stdin);
    
    eratos();
    
    // 에라토스테네스의 체를 통해 찾은 소수 삽입 
    for(int i = 2; i <= 1000000; i++)
    {
        if(num[i] != 0)
        {
            prime.push_back(i);
        }
    }
    
    while(1)
    {
        int n;
        scanf("%d"&n);
        
        if(n == 0)
        {
            break;
        }
        
        bool find = false;
        
        // 찾은 소수 크기만큼 
        for(int i = 0; i < prime.size(); i++)
        {            
            if(num[prime[i]] + num[n-prime[i]] == n)
            {
                find = true;
                printf("%d = %d + %d\n", n, num[prime[i]], num[n-prime[i]]);
                break;
            }    
        }
        
        if(find == false)
        {
            printf("Goldbach's conjecture is wrong.\n");
        }
    }
    
    return 0;
}
cs

+ Recent posts