https://www.acmicpc.net/problem/6588
6588번: 골드바흐의 추측
각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰
www.acmicpc.net
풀이 과정
100만 이하의 모든 짝수 입력에 대해 두 홀수 소수의 합으로 나타낼 수 있는지 확인하면 된다.
100만 이하의 모든 소수를 에라토스테네스의 체로 구해서 배열에 넣어주고, 입력 받은 수 - 소수배열[i] (1 <= i < 소수배열 길이) 값이 소수면 두 홀수 소수의 합으로 나타낼 수 있는 것이니 출력해주면 된다.
코드
import sys
prime = []
primeCheck = [0] * 1000001
for i in range(2, 1000001):
if primeCheck[i] == 0:
prime.append(i)
for j in range(2*i, 1000001, i):
primeCheck[j] = 1
while True:
n = int(sys.stdin.readline())
if n == 0: break
for i in range(1, len(prime)):
if primeCheck[n - prime[i]] == 0:
print(f'{n} = {prime[i]} + {n - prime[i]}')
break
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 1676 - 팩토리얼 0의 개수 [파이썬] (0) | 2022.04.06 |
---|---|
백준 10872 - 팩토리얼 [파이썬] (0) | 2022.04.06 |
백준 1929 - 소수 구하기 [파이썬] (0) | 2022.04.01 |
백준 1978 - 소수 찾기 [파이썬] (0) | 2022.03.26 |
백준 2609 - 최대공약수와 최소공배수 [파이썬] (0) | 2022.03.26 |