Problem Solving/boj
[BOJ] 6588. 골드 바흐의 추측(Python)
chesleashin
2021. 3. 4. 14:34
6588번: 골드바흐의 추측
각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰
www.acmicpc.net
# 33분 소요
- 에라토스테네스 체 이용해서 미리 소수 테이블을 만들어 놓는다. 참고(https://wikidocs.net/21638)
- 이를 만드는 데 시간, 메모리 미리 소요해놓고 답을 구하는 데 걸리는 시간은 최소화한다.
- 가장 작은 소수인 2부터 두 수가 모두 소수인 가장 빠른 경우 정답 리턴
파이썬 코드는 다음과 같다.
import sys
input = sys.stdin.readline
a = [0, 0] + [1]*(1000001-1)
for i in range(2, 1001):
for j in range(2*i, 1000001+1, i):
a[j] = 0
def solve(n):
for num in range(2, n):
if a[num] and a[n-num]:
print(n, "=", num, "+", n-num)
return
print("Goldbach's conjecture is wrong.")
return
while True:
n = int(input())
if not n:
break
solve(n)
- 고찰 : 어렵지 않은 문제인만큼 빠르게 푸는 힘을 갖자. 힘!