문제
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
풀이
주어진 n을 n부터 1씩 증가시키면서 소수 판별을 한다
2를 제외한 모든 소수의 일의자리는 1, 3, 7, 9 라서 1씩증가시켜도 금방 찾을꺼라 시간이 오래걸리지 않을꺼라 생각했다.
소수인지 판별할때, 2부터 N의 제곱근까지 약수인지 확인해보았다.
import Foundation
func isPrimeNum (num: Int) -> Bool {
if num < 2 {
return false
} else {
var idx = 2
while idx * idx <= num {
if num % idx == 0 {
return false
} else {
idx += 1
}
}
return true
}
}
let count = Int(readLine()!)!
for i in 0..<count {
var num = Int(readLine()!)!
while !isPrimeNum(num: num) {
num += 1
}
print(num)
}
'코딩테스트 > 백준' 카테고리의 다른 글
BOJ-13909 창문 닫기 Swift (0) | 2023.04.08 |
---|---|
BOJ-17103 골드바흐 파티션 Swift (0) | 2023.04.08 |
BOJ-2485 가로수 Swift (0) | 2023.04.07 |
BOJ-1735 분수 합 Swift (0) | 2023.04.07 |
BOJ-13241 최소공배수 Swift (0) | 2023.04.07 |