4보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 골드바흐의 추측을 검증하는 문제
n (4 ≤ n ≤ 1,000,000)n = a + b (두 홀수 소수 a, b 찾기)1,000,000 이하의 모든 소수를 미리 계산한다. n에 대해: 3부터 n//2까지 반복하며 두 개의 소수 (a, b)를 찾는다. (한 수가 다른 한 수보다 클 수 없음 → n//2까지만 탐색) a + b = n이 성립하면 출력 후 종료. "Goldbach's conjecture is wrong." 출력. import sys
# 1️⃣ 에라토스테네스의 체로 소수 판별 배열 생성
MAX = 1000000
is_prime = [True] * (MAX + 1)
is_prime[0], is_prime[1] = False, False # 0과 1은 소수가 아님
for i in range(2, int(MAX ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, MAX + 1, i):
is_prime[j] = False
# 2️⃣ 입력 처리
input = sys.stdin.read
data = map(int, input().split())
# 3️⃣ 짝수 n을 두 소수의 합으로 표현
for n in data:
if n == 0:
break
found = False
for a in range(3, n // 2 + 1, 2): # 3부터 n//2까지 홀수 소수 탐색
b = n - a
if is_prime[a] and is_prime[b]: # 두 수가 모두 소수인지 확인
print(f"{n} = {a} + {b}")
found = True
break
if not found:
print("Goldbach's conjecture is wrong.")
sys.stdin.read() 사용하여 여러 개 입력을 빠르게 처리