๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 6588๋ฒˆ_๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก

Dbswnstjd 2023. 4. 25. 11:43

๋ฌธ์ œ

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

 

6588๋ฒˆ: ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, n = a + b ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, a์™€ b๋Š” ํ™€์ˆ˜ ์†Œ์ˆ˜์ด๋‹ค. ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋Š” ๊ณต๋ฐฑ ํ•˜๋‚˜๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ๋‹ค. ๋งŒ์•ฝ, n์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ผ๋ฉด, b-a๊ฐ€ ๊ฐ€์žฅ ํฐ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 6588๋ฒˆ ๋ฌธ์ œ - ๊ณจ๋“œ๋ฐ”ํ์˜ ์ถ”์ธก
import sys
input = sys.stdin.readline

n = 1000001
# ์†Œ์ˆ˜ ์•„๋‹Œ ๋ชจ๋“  ํ™€์ˆ˜ ์ฒ˜๋ฆฌ
prime = [1] * n
for i in range(3, int(n ** 0.5) + 1, 2):
    if prime[i]:
        for j in range(i * 2, n, i):
            prime[j] = 0
# k๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๋‘ ํ™€์ˆ˜์ธ ์†Œ์ˆ˜ ๊ฒ€์ƒ‰
while 1:
    k = int(input())
    if not k:
        break
    for i in range(3, int(k // 2) + 1, 2):
        if prime[i] and prime[k - i]:
            print(f"{k} = {i} + {k - i}")
            break
    else:
        print("Goldbach's conjecture is wrong.")

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ„๋‹จํžˆ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.