[ 2023-05-30 ๐Ÿชฑ TIL ]

Burkeyยท2023๋…„ 5์›” 30์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
89/157
post-thumbnail

๋ฐฑ์ค€ 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)) ์ž…๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€