Where who wants to meet someone
백준 Swift [1929] 소수 구하기 본문
728x90
난이도
실버 III
문제
https://www.acmicpc.net/problem/1929
내 답안
import Foundation
let input = readLine()!.split(separator: " ").map { Int($0)! }
var a = input[0]
var b = input[1]
var sosu = [Int]()
func test(with inputValue: Int) {
if inputValue < 2 {
return
}
for i in 2..<Int(sqrt(Double(inputValue)) + 1) {
if inputValue % i == 0 {
return
}
}
sosu.append(inputValue)
}
while !(a > b) {
test(with: a)
a += 1
}
for i in 0..<sosu.count {
print(sosu[i])
}
- 이전 문제에서 사용했던 루트 N까지의 수를 통해 소수 판별하는 로직을 활용하여 문제를 풀 수 있었다.
- 다만 다른 점은, 이전에는 가장 작은 소수를 출력해야 했기에 true, false를 통해 작업을 했다면 이번에는 범위 내 모든 소수를 출력해야 하기 때문에 루프를 유지할 필요가 있다는 것이었다.
- 하여, 로직은 똑같으나 a가 b보다 크지 않을 때(작거나 같다면) test 함수를 반복하고, a의 값을 1씩 증가시키도록 하였다.
test 함수에서는 소수라면 sosu 배열에 append하도록 하여 마지막에 for문을 통해 출력할 수 있도록 하였다.
'백준 알고리즘 문제 기록 > 약수, 배수와 소수 2' 카테고리의 다른 글
백준 Swift [17103] 골드바흐 파티션 (0) | 2023.08.21 |
---|---|
백준 Swift [4948] 베르트랑 공준 (0) | 2023.08.21 |
백준 Swift [4134] 다음 소수 (0) | 2023.08.18 |
백준 Swift [2485] 가로수 (0) | 2023.08.17 |
백준 Swift [1735] 분수 합 (0) | 2023.08.13 |