728x90
λ°μν
π λ³Έ λ΄μ©μ 'μ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€ with νμ΄μ¬(λλλΉ μ§μ)'μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€.
μλΌν μ€ν λ€μ€μ 체
N λ³΄λ€ μκ±°λ κ°μ λͺ¨λ μμλ₯Ό μ°Ύμ λ μ¬μ©νλ λνμ μΈ μκ³ λ¦¬μ¦
μμ νλ³ κ³Όμ
1οΈβ£ 2λΆν° NκΉμ§μ λͺ¨λ μμ°μλ₯Ό λμ΄νλ€.
2οΈβ£ λ¨μ μ μ€μμ μμ§ μ²λ¦¬νμ§ μμ κ°μ₯ μμ μ iλ₯Ό μ°Ύλλ€.
3οΈβ£ λ¨μ μ μ€μμ iμ λ°°μλ₯Ό λͺ¨λ μ κ±°νλ€(iλ μ κ±°νμ§ μλλ€).
4οΈβ£ λ μ΄μ λ°λ³΅ν μ μμ λκΉμ§ 2οΈβ£λ²κ³Ό 3οΈβ£λ²μ κ³Όμ μ λ°λ³΅νλ€.
μμ νλ³ νλ‘κ·Έλ¨
import math
n = 10 # 2λΆν°, 10κΉμ§μ λͺ¨λ μμ λνμ¬ μμ νλ³
array = [True for i range(n + 1)] # μ²μμ λͺ¨λ μκ° μμ(True)μΈ κ²μΌλ‘ μ΄κΈ°ν(0κ³Ό 1μ μ μΈ)
# array[1] = False
# μλΌν μ€ν
λ€μ€μ 체 μκ³ λ¦¬μ¦
for i in range(2, int(math.sqrt(n) + 1): # 2λΆν° nμ μ κ³±κ·ΌκΉμ§μ λͺ¨λ μλ₯Ό νμΈνλ©°
if array[i] == True: # iκ° μμμΈ κ²½μ°(λ¨μ μμΈ κ²½μ°)
# iλ₯Ό μ μΈν iμ λͺ¨λ λ°°μλ₯Ό μ§μ°κΈ°
j = 2
while i * j <= n:
array[i * j] = False
j += 1
# λͺ¨λ μμ μΆλ ₯
for i in range(2, n + 1):
if array[i]:
print(i, end=' ')
2 3 5 7
β μ£Όμν΄μΌν μ
- λ¬Έμ μμ 1μ΄ μμμΈμ§ νλ³ν΄μΌ νλλ‘ μ λ ₯ μ‘°κ±΄μ΄ μ£Όμ΄μ§ κ²½μ° array[1] = False μΆκ°
- μκ³ λ¦¬μ¦μ μνν λ Nμ ν¬κΈ°λ§νΌ 리μ€νΈλ₯Ό ν λΉν΄μΌ νλ―λ‘ λ©λͺ¨λ¦¬κ° λ§μ΄ νμ Nμ΄ 1,000,000 μ΄λ΄λ‘ μ£Όμ΄μ§λ κ²½μ° μ¬μ©
'Algorithm > μ΄κ²μ΄ μ½λ© ν μ€νΈλ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Python] μν μκ° μΈ‘μ μμ€μ½λ (0) | 2022.07.28 |
---|