Algorithm/Python

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

🥭맹2 2021. 5. 3. 01:02

1. 문제

www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰

www.acmicpc.net

2. 접근 방법

예전에 했던 에라토스테네스의 체를 사용해서 풀었따.

 

시간 초과가 날 거 같아서

그냥 갯수만큼 리스트로 미리 소수를 구해놓고

 

a-b가 가장 큰 쌍을 구해야하니까, 결국 a가 가장 크고 b가 가장 큰 값이면 되니까

가장 작은 수부터 확인해서 a+b가 N이 될 때 둘 다 소수인지 확인하고 맞으면 바로 프린트하고 끄읕

3. 코드

python

wrong_msg = "Goldbach's conjecture is wrong."
prime = [False, False] + [True] * 1000000

for i in range(2, 1000000):
    if prime[i]:
        for j in range(2*i, 1000000, i):
            prime[j] = False

while True:
    N = int(input())
    a, b = 0, 0
    if N == 0:
        break
    for i in range(N):
        if prime[i] and prime[N-i]:
            a, b = i, N-i
            break
    if a * b != 0:
        print(f'{N} = {a} + {b}')
    else:
        print(wrong_msg)

4. 마치며

마치며~!

'Algorithm > Python' 카테고리의 다른 글

[스택/큐] 기능개발  (0) 2021.05.03
[백준 2309] 일곱 난쟁이  (0) 2021.05.03
[백준 9613] GCD 합  (0) 2021.05.02
[스택/큐] 다리를 지나는 트럭  (0) 2021.05.02
[해시] 베스트앨범  (0) 2021.05.01