반응형
https://www.acmicpc.net/problem/6588
본 문제는 1998 University of Ulm Local Contest G번 문제다. 1742년 골드바흐는 다음과 같은 추측을 하였다. '4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.' 골드바흐의 추측의 자세한 내용은 링크를 참고 바란다. 문제에서 입력의 최대 크기가 1,000,000 이므로 에라토스테네스의 체를 이용하면 빠르게 처리할 수 있다.
- 에라토스테네스의 체로 최대 입력까지의 소수를 구한다.
- 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 == 0) return 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 |
댓글