π Algorithm/π λ°±μ€
Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 4134 λ²
λ²κΏμ€μ리π¦‘
2024. 3. 12. 15:08
λ°μν
λ€μ μμ
λ¬Έμ |
μ μ n(0 ≤ n ≤ 4*$10^{9}$)κ° μ£Όμ΄μ‘μ λ, nλ³΄λ€ ν¬κ±°λ κ°μ μμ μ€ κ°μ₯ μμ μμ μ°Ύλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯ |
첫째 μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μκ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ μΌμ΄μ€λ ν μ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , μ μ nμ΄ μ£Όμ΄μ§λ€.
μΆλ ₯ |
κ°κ°μ ν μ€νΈ μΌμ΄μ€μ λν΄μ nλ³΄λ€ ν¬κ±°λ κ°μ μμ μ€ κ°μ₯ μμ μμλ₯Ό ν μ€μ νλμ© μΆλ ₯νλ€.
νμ΄ |
μλΌν μ€ν λ€μ€μ 체 μκ³ λ¦¬μ¦μ μ΄μ©ν΄ μμ λμΆ (μΈμλκΈ°) 6k ± 1 κ·μΉμ μ΄μ©
λ΅μ |
fun main() {
val count = readLine()!!.toInt()
repeat(count) {
val num = readLine()!!.toLong()
val prime = nextNum(num)
println(prime)
}
}
fun nextNum(n: Long): Long {
var num = n
if (num <= 1) num = 2
while (!isPrime(num)) {
num++
}
return num
}
fun isPrime(num: Long): Boolean {
if (num <= 1) return false
if (num <= 3) return true
if (num % 2 == 0L || num % 3 == 0L) return false
var i = 5L
while (i * i <= num) {
if (num % i == 0L || num % (i + 2) == 0L) {
return false
}
i += 6
}
return true
}
λ°μν