https://www.acmicpc.net/problem/1929
에라토스테네스의 체를 사용하여 시간내에 풀 수 있다. 2부터 모든 소수를 구하는 이유는 100부터 시작할 경우 100은 지워지지 않기 때문에 2부터 범위까지의 모든 소수를 구한 수 시작수이상의 수 부터 출력을 하면 된다.
import Foundation
let input = readLine()!.split(separator: " ").map { Int($0)! }
let m = input[0]
let n = input[1]
var numList = [Int]()
var boolList = Array(repeating: false, count: n + 1)
for i in 2...n {
if !boolList[i] {
numList.append(i)
for j in stride(from: i * 2, through: n, by: i) {
boolList[j] = true
}
}
}
for prime in numList {
if prime < m { continue }
print(prime)
}
'Algorithm > 백준' 카테고리의 다른 글
백준 9020번: 골드바흐의 추측(Swift) (0) | 2021.08.29 |
---|---|
백준 4948번: 베르트랑 공준(Swift) (0) | 2021.08.28 |
백준 11653번: 소인수분해 (Swift) (0) | 2021.08.25 |
백준 2581번: 소수(Swift) (0) | 2021.08.17 |
백준 1978번: 소수찾기(Swift) (0) | 2021.08.16 |