백준/백준-C++

6588번: 골드바흐의 추측

Beabletoet 2017. 5. 28. 13:17

#include<cstdio>

#define max 1000000

int main()

{

int n, up;

bool num[max+1];

for (int i = 0; i <= max; ++i)

num[i] = 1;

for (int i = 4; i <= max; i += 2)

num[i] = 0;

for (int i = 3; i*i <= max; i += 2)

if (num[i] == 1)

for (int j = i*i; j <= max; j += 2 * i)

num[j] = 0;

for (scanf("%d", &n); n != 0; scanf("%d", &n))

{

up = 2;

while (up<=n)

if (num[up] == 1 && num[n-up] == 1)

break;

else

for (++up; num[up] != 1; ++up);

(up > n) ? printf("Goldbach's conjecture is wrong.") : printf("%d = %d + %d\n", n, up, n-up);

}

}