Home 백준 - 4948 베르트랑 공준
Post
Cancel

백준 - 4948 베르트랑 공준

문제

4948 베르트랑 공준

screencaptures

kotlin code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
fun main() {
    val inputs = readInputs()

    val isPrimeNumbers = getIsPrimeNumbers(inputs.maxOf { it } * 2)

    printOutput(inputs, isPrimeNumbers)
}

fun printOutput(inputs: MutableList<Int>, primeNumbers: BooleanArray) = inputs.forEach { println((it + 1..it * 2).count { x -> primeNumbers[x] }) }

fun getIsPrimeNumbers(to: Int): BooleanArray {
    val isPrimeNumbers = BooleanArray(to + 1) { true }
    isPrimeNumbers[0] = false
    isPrimeNumbers[1] = false
    val max = kotlin.math.sqrt(isPrimeNumbers.size.toDouble()).toInt()
    for(index in (2..max)) {
        if(!isPrimeNumbers[index]) continue
        for(i in ((index * index)until isPrimeNumbers.size) step index) {
            isPrimeNumbers[i] = false
        }
    }
    return isPrimeNumbers
}

fun readInputs(): MutableList<Int> {
    val inputs = mutableListOf<Int>()
    while (true) {
        val input = readln().trim()
        if(input == "")  continue
        if(input == "0") return inputs
        inputs.add(input.toInt())
    }
}

Reference

소수 (수론)

에라토스테네스의 체

This post is licensed under CC BY 4.0 by the author.

백준 - 24445 알고리즘 수업 - 너비 우선 탐색 2

백준 - 1929 소수 구하기 풀이