๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ Algorithm/๊ตฌํ˜„

[๋ฐฑ์ค€] 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

by HelloRabbit 2023. 2. 18.
728x90

Hint

1. 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์„ ํ•˜๊ณ , ์†Œ์ˆ˜์ด๋ฉด ๊ทธ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜์ผ๊นŒ์š”?
2. ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ๊ฒŒ ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ์ œ๊ฑฐํ•ด์ฃผ๋ฉด ๋‚˜์ค‘์— ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค!
3. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์ด์šฉํ•˜๊ธฐ (๊ทธ๊ฒŒ ๋ญ์ง€?)

 

๋ฐฑ์ค€ 1929๋ฒˆ:  ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (ํ’€์–ด๋ณด๊ธฐ)

import sys

M, N = map(int, sys.stdin.readline().split())

# N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
# ์ด๊ฒƒ์ด ์—๋ ˆ์Šคํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด! 
is_prime = [True] * (N+1)
is_prime[0], is_prime[1] = False, False

# 2๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋Š” ๋ชจ๋‘ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  False๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ
for i in range(2, N+1):     # ์ˆซ์ž
    for k in range(2, N+1): # ๋ฐฐ์ˆ˜
        if i*k > N:
            break
        is_prime[i*k] = False

# M๊ณผ N ์‚ฌ์ด์˜ ์ˆซ์ž ์ค‘ ์†Œ์ˆ˜์ด๋ฉด ์ถœ๋ ฅํ•˜๊ธฐ
for num in range(M, N+1):
    if is_prime[num]:
        print(num)

 

 

 

๋Œ“๊ธ€