์์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด์ ๋ํด ์์๋ณด์
์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๐ก 0๋ถํฐ ๊ตฌํ๊ณ ์ํ๋ ์(n)๊น์ง True๋ก ์ฑ์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
๐ก 2๋ฅผ ์ ์ธํ 2์ ๋ฐฐ์๋ฅผ False๋ก ๋ฐ๊พผ๋ค.
๐ก 3์ ์ ์ธํ 3์ ๋ฐฐ์๋ฅผ False๋ก ๋ฐ๊พผ๋ค.
๐ก 5๋ฅผ ์ ์ธํ 5์ ๋ฐฐ์๋ฅผ False๋ก ๋ฐ๊พผ๋ค.
.
.
.
๐กn์ ์ต๋ ์ฝ์๋ sqrt(n) ์ดํ์ด๋ฏ๋ก sqrt(n)์ ๋ฐฐ์๋ฅผ ๋ชจ๋ False๋ก ๋ฐ๊พผ๋ค.
๐ก2~n๊น์ง์ ์ซ์ ์ค True์ธ ์ซ์๋ค์ด ์์๊ฐ ๋๋ค.
์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
def isPrime(n):
sieve = [True] * n
# n์ ์ต๋ ์ฝ์๋ sqrt(n) ์ดํ
m = int(n ** 0.5)
for i in range(2, m+1):
if sieve[i] == True: # i๊ฐ ์์์ธ ๊ฒฝ์ฐ
for j in range(i+i, n, i):
sieve[j] = False # i ์ดํ i์ ๋ฐฐ์๋ ์์๊ฐ ์๋
# 2๋ถํฐ n๊น์ง ์์ ๋ชฉ๋ก ์ฐ์ถ
return [i for i in range(2, n) if sieve[i] == True]
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ํ | ์ต๋ ํ, ์ต์ ํ (0) | 2022.02.23 |
---|---|
[Algorithm] DFS & BFS | ๊ทธ๋ํ ํ์ (0) | 2021.08.14 |
[Algorithm] ์ด์ง ํ์ | Binary Search (0) | 2021.07.31 |
[Algorithm] ์ ๋ ฌ | ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ํต ์ ๋ ฌ, ๊ณ์ ์ ๋ ฌ (0) | 2021.07.27 |
[Algorithm] ๋์ ํ๋ก๊ทธ๋๋ฐ | Dynamic Programming (DP) (0) | 2021.07.11 |