✏️백준 1929번 : 소수 구하기
나의 풀이
- Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let mn = readLine()!.split(separator: " ").map{ Int(String($0))!}
let m = mn[0]
let n = mn[1]
var nums = Array(repeating: true, count: n + 1)
nums[0] = false
nums[1] = false
if n > 1 {
for i in (2...n) {
if !nums[i] { continue }
for j in stride(from: 2 * i, through: n, by: i) {
nums[j] = false
}
}
}
for i in (m...n) {
if nums[i] {
print(i)
}
}
- Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
input = sys.stdin.readline
m, n = map(int, input().strip().split())
nums = [True] * (n+1)
nums[0] = False; nums[1] = False
for i in range(2, n+1):
if not nums[i]:
continue
for j in range(2*i, n+1, i):
nums[j] = False
for i in range(m, n+1):
if nums[i]:
print(i)
에라토스테네스의 체를 이용해 빠르게 소수를 구한다