Algorithm Problem/Python

[python] SWEA - 3131. 100만 μ΄ν•˜μ˜ λͺ¨λ“  μ†Œμˆ˜

deo2kim 2020. 12. 23. 22:38
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • D3 | μ†Œμˆ˜(μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체)

πŸ’¨ μ£Όμ–΄μ§„ λ²”μœ„λ§ŒνΌμ˜ 길이λ₯Ό 가진 λͺ¨λ“  μ›μ†Œκ°€ 1둜 된 리슀트λ₯Ό λ§Œλ“ λ‹€. ( 이 λ¬Έμ œμ—μ„œ λ²”μœ„λŠ” 10**6 )

πŸ’¨ 리슀트의 0λ²ˆμ§Έμ™€ 1λ²ˆμ§ΈλŠ” 미리 0으둜 λ§Œλ“€μ–΄λ‘”λ‹€. ( μ†Œμˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ )

πŸ’¨ 2λΆ€ν„° λκΉŒμ§€ λ°˜λ³΅λ¬Έμ„ μ‹€ν–‰ν•˜λ©΄μ„œ

πŸ’¨ ν•΄λ‹Ή 인덱슀의 값이 0이 μ•„λ‹ˆλΌλ©΄

πŸ’¨ ν•΄λ‹Ή 인덱슀λ₯Ό μ œμ™Έν•œ 배수의 인덱슀의 값을 λͺ¨λ‘ 0으둜 λ°”κΏ”μ€€λ‹€. ( μ†Œμˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ )

πŸ’¨πŸ’¨ EX) 2번째 값이 1이면 4, 6, 8 ... 은 λͺ¨λ‘ 0으둜 λ°”κΏ”μ€€λ‹€.

πŸ’¨ μ›μ†Œμ˜ 값이 1인 녀석듀은 λͺ¨λ‘ μ†Œμˆ˜μ΄λ‹€.

πŸ’»μ†ŒμŠ€ μ½”λ“œ

N = 10 ** 6 + 1
eratos = [1] * N
eratos[0], eratos[1] = 0, 0

for i in range(2, N):
    if eratos[i] == 1:
        for j in range(i * 2, N, i):
            eratos[j] = 0

for i in range(N):
    if eratos[i] == 1:
        print(i, end=' ')
 

πŸ“•λ¬Έμ œ 확인

좜처: SW Expert Academy

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

 

λ°˜μ‘ν˜•