문제 출처
1. 문제설명
- 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.
- 백만 이하의 모든 짝수에 대해서, 이 추측을 검증하라
2. 알고리즘 설계
- 소수 이므로, 소수를 구하는 알고리즘을 취한다.
- 에라토스테네스의 체 사용
- 3부터 범위
N
까지 돌면서, 가장 앞의 소수와 가장 뒤의 소수가 정답
3. 로직
bool chk[SZ + 1];
void eratos(void)
{
chk[1] = true;
for (int i = 2; i <= sqrt(SZ); i++) {
if (chk[i]) continue;
for (int j = i * i; j <= SZ; j += i)
chk[j] = true;
}
}
4. 전체 코드
5. 소감
- 이 문제처럼 테스트케이스로 되어 있는 경우는
- 최대 범위까지 한번에 구해놓는 게 편한 거 같다.