๋šœ๋ถ€๋‹ˆ์˜ Devlog

[BOJ] 1929.์†Œ์ˆ˜๊ตฌํ•˜๊ธฐ (Python)

by ๋šœ๋ถ€๋‹ˆ

 

 

1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ M๊ณผ N์ด ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ M ≤ N ≤ 1,000,000) M์ด์ƒ N์ดํ•˜์˜ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

ํ•ด๋‹น ๋ฌธ์ œ๋Š” M ์ด์ƒ N ์ดํ•˜์˜ ์ˆ˜ ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

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

 

# ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ

M, N = map(int, input().split())
check = [0] * (N + 1) # ์†Œ์ˆ˜ ํ™•์ธ์„ ์œ„ํ•œ ์šฉ๋„

for i in range(2, N + 1) : # ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์ฒด์˜ ์ด์šฉ
    if check[i] == 0 :
        if i >= M :
            print(i)
        for j in range(i, N + 1, i) :
            check[j] = 1

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋Š” ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŠน์ • ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋“ค์„ ๊ณ„์‚ฐ์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์›๋ฆฌ์ธ๋ฐ,

์ด๊ฒƒ์ด ๋งˆ์น˜ ์ฒด์— ๊ฑธ๋Ÿฌ์ง€๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

 

๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•  ๋ฒ”์œ„๋งŒํผ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. (์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ 0 ์ดˆ๊ธฐํ™”๋ฅผ ์ข‹์•„ํ•ด์š” ๐Ÿ˜„)
  2. 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฐฐ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋“ค์„ ์ง€์šฐ๋ฉฐ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ง€์›Œ์ง€์ง€ ์•Š์€ ์ˆ˜๋“ค์€ ๋ชจ๋‘ ์†Œ์ˆ˜์ด๋ฏ€๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ๊ตฌํ˜„ํ•˜๊ธฐ

def find_prime_number(N) :
    check = [0] * (N + 1)
    result = []
    for i in range(2, N + 1) :
        if check[i] == 0 :
            for j in range(i*2, N + 1, i) :
                if check[j] == 0 :
                    check[j] = 1

    for i in range(2, N + 1) :
        if check[i] == 0 : result.append(i)
    return result

if __name__=="__main__" :
    N = 100
    print(find_prime_number(N))

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

๋šœ๋ถ€๋‹ˆ์˜ Devlog

๋šœ๋ถ€๋‹ˆ

ํ™œ๋™ํ•˜๊ธฐ