코딩하는 해맑은 거북이

[Python] 소수 구하기 - 백준 본문

코딩테스트

[Python] 소수 구하기 - 백준

#CJE 2022. 12. 19.
해당 글은 백준 1929번 문제 '소수 구하기'을 다룬다.

문제

https://www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

 

설명

소수를 구하는 해당 문제는 에라토스테네스의 체를 이용하면 쉽게 풀수있다는 도움을 받았다.

에라토스테네스의 체는 11보다 작은 배수들의 값을 지우면 소수만 남는 방법이다.

해당 문제에서 이전에 지웠던 값을 중복해서 지운다면 런타임에러가 뜬다.

그러므로 if문을 통해 이전에 지운 값은 다시 검사하지 않도록 해야한다.

 

에라토스테네스의 체

 

코드

m, n = map(int, input().split())
result = [True]*1000001
result[1] = False
for i in range(2, n+1):
    if result[i]:
        for j in range(i+i, n+1, i):
            result[j] = False

for i in range(m, n+1):
    if result[i]:
        print(i)

     

 

 

'코딩테스트' 카테고리의 다른 글

[Python] 카드2 - 백준  (0) 2022.12.20
[Python] 1로 만들기 - 백준 (DP)  (0) 2022.12.20
[Python] 1, 2, 3 더하기 - 백준 (DP)  (0) 2022.12.19
[Python] 한수 - 백준  (0) 2022.12.18
[Python] 덩치 - 백준  (0) 2022.12.18
Comments