๋ฐฑ์ค 6588๋ฒ
import sys
input = sys.stdin.readline
sosu = [False, False] + [True] * 1000000
# index๋ฅผ ๊ฐ์ง๊ณ ์์๋ฅผ ํ๋จ
for i in range(2, 1000):
if sosu[i]:
for j in range(i * 2, 1000000, i):
sosu[j] = False
# ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ธ ์์ฐ์๊ฐ
# ์์์ธ ๊ฒ๋ค์ True๋ก ์ค์
while True:
n = int(input())
half_n = n // 2
check = True
if n < 6:
break
for a in range(3, half_n + 1, 2):
# ๋์์ a์ n-a 2๊ฐ๋ฅผ ํ์ธํ๊ธฐ์ n์ ๋ฐ ๊ฐ์ผ๋ก for๋ฌธ์ ๋๋ฆด ์ ์๋ค.
if sosu[a] and sosu[n - a]:
print("{} = {} + {}".format(n, a, (n-a)))
check = False
break
if check:
print("Goldbach's conjecture is wrong.")
์์ ๋ฌธ์ ๊ฐ ๋์ค๋ฉด ํญ์ ์ ๊ณฑ๊ทผ์ ์ฌ์ฉํ์ฌ ์ฒดํฌํ๋ ๋ฐฉ๋ฒ์ ๊ณ ์งํด์์ต๋๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ์์ ๊ทธ ํ์ด๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ์์ต๋๋ค...ใ
๊ทธ๋์ ์ฐพ์๋ณด์๋๋ ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ ํ์ด๋ฅผ ์๊ฒ๋์์ต๋๋ค.
์๋ผํ ์คํ
๋ค์ค์ ์ฒด์ ์๊ฐ๋ณต์ก๋๋ O(n * log(log n)) ์
๋๋ค.