시간초과로 고생했다..
에라토스테네스의 체 구현방법 꼭 숙지하자
import math
import sys
# 에라토스테네스의 체 == 주어진 범위 내의 소수 리스트 반환하는 효율적인 알고리즘
def sieve_of_eratosthenes(n):
prime = [True for _ in range(n+1)]
prime[0] = prime[1] = False
for i in range(2, int(math.sqrt(n)) + 1):
if prime[i] == True:
for j in range(i*i, n+1, i):
prime[j] = False
return prime
max_n = 1000000
prime_list = sieve_of_eratosthenes(max_n)
while True:
n = int(sys.stdin.readline())
if n == 0:
break
## 홀수만 찾으면 되므로 2씩 더해준다.
for i in range(3, int(n/2)+1, 2):
if prime_list[i] and prime_list[n-i]:
print(f"{n} = {i} + {n-i}")
break
else:
print("Goldbach's conjecture is wrong.")
'알고리즘' 카테고리의 다른 글
[프로그래머스] 두 원사이의 정수 쌍/파이썬 python (0) | 2024.02.28 |
---|---|
[백준] 11726번 파이썬 python (1) | 2024.02.27 |
[프로그래머스] 요격 시스템 (파이썬 python) (0) | 2024.02.27 |
<백준> 19532번 파이썬 알고리즘 (0) | 2023.06.06 |
[프로그래머스] 폰켓몬 (java 자바) (0) | 2022.11.03 |