λ°μν
Notice
Recent Posts
Recent Comments
Link
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- μΈνΌ
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- sort
- SSAFY
- μΉ΄μΉ΄μ€
- DFS
- μκ³ λ¦¬μ¦
- κ·Έλν
- BFS
- μ½ν
- Backjoon
- SWμλν μ€νΈ
- μλ£κ΅¬μ‘°
- μ½λ©ν μ€νΈ
- Blind
- javascript
- λ°±μ€
- νν
- μ€ν
- νμ΄μ¬
- kakao
- DP
- νλ‘κ·Έλλ¨Έμ€
- μΌμ±
- algorithm
- boj
- μμ νμ
- SWEA
- μλ°μ€ν¬λ¦½νΈ
- Python
Archives
- Today
- Total
λ§μν
μλΌν μ€ν λ€μ€μ 체(Sieve Of Eratosthenes) λ³Έλ¬Έ
λ°μν

π μλΌν μ€ν λ€μ€μ 체(Sieve Of Eratosthenes) λ
- λνμ μΈ μμ νλ³ μκ³ λ¦¬μ¦ ( μμ: Prime Number )
- νκΊΌλ²μ λ§μ μ«μμ μμλ₯Ό νλ³ν λ μ¬μ©
- μ«μ νκ°μ μμλ₯Ό νλ³νλ κΈ°λ³Έ μμ νλ³ μκ³ λ¦¬μ¦μ μκ°λ³΅μ‘λλ O(N)
- νμ§λ§ μνμ μΌλ‘ μ κ·Όν΄μ μκ°λ³΅μ‘λλ₯Ό O(N^(1/2)) κΉμ§ μ€μΌ μ μλ€.
- μλΌν μ€ν λ€μ€μ 체λ₯Ό μ¬μ©νλ©΄ μκ°λ³΅μ‘λλ O(n log log n)
π μλΌν μ€ν λ€μ€μ 체(Sieve Of Eratosthenes) ꡬν
- μμ°μ 50κΉμ§μ μ«μ μ€μμ μμλ₯Ό ꡬνλ€κ³ μκ°ν΄λ³΄μ.
- κΈ°λ³Έ μκ³ λ¦¬μ¦μ μ¬μ©ν κ²½μ° O(N*N^(1/2)) μ μκ°λ³΅μ‘λκ° μκΈ΄λ€.
- μλΌν μ€ν λ€μ€μ 체λ₯Ό μ΄μ©νμ¬ κ΅¬ν΄λ³΄μ.
- λ¨Όμ 51κ°μ κ°μ΄ 1(True)μΈ λ¦¬μ€νΈλ₯Ό λ§λ λ€.
- forλ¬ΈμΌλ‘ 2λΆν° μμνμ¬ μκΈ° μμ μ μ μΈνκ³ μμ μ λ°°μμ μ«μλ€μ 0(False)λ‘ λ§λ λ€.
- μ΄λ―Έ μμ μ΄ 0 μ΄λΌλ©΄ 건λλ΄λ€.
- 리μ€νΈμμ κ°μ΄ 1μΈ μΈλ±μ€λ₯Ό μΆμΆνλ©΄ κ·Έ μ«μλ€μ΄ μμμ΄λ€.
import math
import time
# κΈ°λ³Έ μμ νλ³ μκ³ λ¦¬μ¦ O(N)
def prime(x):
for i in range(2, x):
if x % i == 0:
return False
return True
# μ κ³±κ·ΌκΉμ§ O(N^(1/2))
def prime2(x):
for i in range(2, int(math.sqrt(x))):
if x % i == 0:
return False
return True
# μλΌν μ€ν
λ€μ€μ 체 O(n log log n)
def eratos(x):
prime_number = [1] * (x + 1)
for i in range(2, x):
if prime_number[i] == 0:
continue
for j in range(i * 2, x + 1, i):
prime_number[j] = 0
# 1λΆν° 10000κΉμ§
n = 10000
print('κΈ°λ³Έ')
start = time.time()
for k in range(2, n + 1):
prime(k)
end = time.time()
print(f'μκ°: {end - start}')
print('μ κ³±κ·Ό')
start = time.time()
for k in range(2, n + 1):
prime2(k)
end = time.time()
print(f'μκ°: {end - start}')
print('μλΌν μ€')
start = time.time()
eratos(n)
end = time.time()
print(f'μκ°: {end - start}')
'''
κΈ°λ³Έ
μκ°: 0.3489978313446045
μ κ³±κ·Ό
μκ°: 0.012001991271972656
μλΌν μ€
μκ°: 0.0019986629486083984
'''
λ°μν
'CS > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| μμ μ λ ¬(topology sort) (0) | 2020.10.05 |
|---|---|
| νλ‘μ΄λ μμ¬(Floyd Warshall) (0) | 2020.10.04 |
| λ€μ΅μ€νΈλΌ(dijkstra) (0) | 2020.10.02 |
| λ€μ΄λλ―Ήνλ‘κ·Έλλ°(Dynamic Programming) (0) | 2020.10.01 |
| ν¬λ£¨μ€μΉΌ μκ³ λ¦¬μ¦(kruskal) (0) | 2020.09.30 |