본문 바로가기
백준

[백준 6588] 골드바흐의 추측, C++

by 황인태(intaehwang) 2020. 1. 9.
반응형

https://www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모

www.acmicpc.net

 본 문제는 1998 University of Ulm Local Contest G번 문제다. 1742년 골드바흐는 다음과 같은 추측을 하였다. '4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.'  골드바흐의 추측의 자세한 내용은 링크를 참고 바란다. 문제에서 입력의 최대 크기가 1,000,000 이므로 에라토스테네스의 체를 이용하면 빠르게 처리할 수 있다.

  1. 에라토스테네스의 체로 최대 입력까지의 소수를 구한다.
  2. 2부터 골드바흐의 추측을 확인하고 맞으면 break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdio>
 
using namespace std;
 
int main() {
    bool chk[1000001];
    chk[0= true;
    chk[1= true;
    for (int i = 2; i <= 1000000; i++) {
        if (!chk[i]) {
            for (int j = i*2; j <= 1000000; j += i) {
                chk[j] = true;
            }
        }
    }
    int n;
    while (true) {
        scanf("%d"&n);
        if (n == 0return 0;
        for (int i = 2; i <= n; i++) {
            if (!chk[i] && !chk[n-i]) {
                printf("%d = %d + %d\n", n, i, n-i);
                break;
            }
        }
    }
}
cs
반응형

'백준' 카테고리의 다른 글

[백준] 2004 - 조합 0의 개수, C++  (0) 2020.01.09
[백준 1675] 팩토리얼 0의 개수, C++  (0) 2020.01.09
[백준 1929] 소수 구하기, C++  (0) 2020.01.09
[백준 1037] 약수, C++  (0) 2020.01.08
[백준 4375] 1, C++  (0) 2020.01.08
Buy me a coffeeBuy me a coffee

댓글