[백준 문제풀이] 1929 - 소수 구하기
풀이
‘M과 N이하의 소수’라는 문장을 보고 에라토스테네스의 체를 써서 풀이해야겠다고 생각했다.
-
배열을 0,1 을 제외하고 n이하의 True를 담은 배열을 만듬(0, 1은 소수가 아니므로)
-
에라토스테네스의 체 알고리즘으로 배열의 요소를 검사함
-
출력함
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
input = sys.stdin.readline
def prime_number(m, n):
primes = [False, False] + [True] * (n - 1) # 0,1은 False
for i in range(2, int(n ** (0.5) + 1)):
if primes[i] == True:
for j in range(i * 2, n + 1, i): # i*2 부터 n+1까지 i 단위로 반복함
primes[j] = False
for index in range(m, n + 1):
if primes[index]:
print(index)
m, n = map(int, input().split(" "))
prime_number(m, n)
댓글남기기