문제

정수 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

+ Recent posts