[python] 백준 6588번

hyeo71·2023년 6월 1일
0

백준

목록 보기
18/24

https://www.acmicpc.net/problem/6588

문제


소스코드

import sys

number = [True] * 1000001

# 소수 list
for i in range(2, int(len(number) ** 0.5) + 1):
    if number[i]:
        for j in range(2 * i, 1000001, i):
            number[j] = False


while 1:
    n = int(sys.stdin.readline())

    if n == 0:
        break

    for i in range(n - 3, 2, -2):
        if (number[i] == True) and (number[n - i] == True):
            print(f"{n} = {n-i} + {i}")
            break
    else:
        print('"Goldbach\'s conjecture is wrong."')

풀이

  • 소수는 테스트케이스에 관계없이 같기 때문에 테스트케이스를 입력하기 전에 소수인지 판정하는 리스트를 생성
  • 두 홀수 소수의 합을 구하는 것이기 때문에 범위는 소수 2를 제외한 3부터 n-3까지이고 홀수만을 확인하면 되기 때문에 range(n-3, 2, -2) or range(3, n-2, 2)를 사용한다.

0개의 댓글