ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin 🍬 λ°±μ€€ 15단계 :: 4948 번
    2024. 3. 14. 15:43
    λ°˜μ‘ν˜•

    λ² λ₯΄νŠΈλž‘ 곡쀀

    문제   |

      λ² λ₯΄νŠΈλž‘ 곡쀀은 μž„μ˜μ˜ μžμ—°μˆ˜ n에 λŒ€ν•˜μ—¬, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 적어도 ν•˜λ‚˜ μ‘΄μž¬ν•œλ‹€λŠ” λ‚΄μš©μ„ λ‹΄κ³  μžˆλ‹€.

      이 λͺ…μ œλŠ” μ‘°μ œν”„ λ² λ₯΄νŠΈλž‘이 1845년에 μΆ”μΈ‘ν–ˆκ³ , νŒŒν”„λˆ„ν‹° 체비쇼프가 1850년에 증λͺ…ν–ˆλ‹€.

      예λ₯Ό λ“€μ–΄, 10보닀 크고, 20보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 4κ°œκ°€ μžˆλ‹€. (11, 13, 17, 19) 또, 14보닀 크고, 28보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜λŠ” 3κ°œκ°€ μžˆλ‹€. (17,19, 23)

      μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜μ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 

     

    μž…λ ₯   |

      μž…λ ₯은 μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ‘œ 이루어져 μžˆλ‹€. 각 μΌ€μ΄μŠ€λŠ” n을 ν¬ν•¨ν•˜λŠ” ν•œ μ€„λ‘œ 이루어져 μžˆλ‹€.

      μž…λ ₯의 λ§ˆμ§€λ§‰μ—λŠ” 0이 주어진닀.

     

    좜λ ₯   |

      각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄μ„œ, n보닀 크고, 2n보닀 μž‘κ±°λ‚˜ 같은 μ†Œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

     

    μ œν•œ   |

    • 1 ≤ n ≤ 123,456

     

     

    풀이  |

      μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체 μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄ μ†Œμˆ˜ λ„μΆœ

     

     

    λ‹΅μ•ˆ  |

    fun main() {
        while (true) {
            val n = readLine()!!.toInt()
            if (n == 0) break
            
            val primeList = sieveOfEratosthenes(2 * n)
            var count = 0
            for (i in n + 1..2 * n) {
                if (primeList[i]) {
                    count++
                }
            }
            println(count)
        }
    }
    
    fun sieveOfEratosthenes(limit: Int): MutableList<Boolean> {
        val sieve = MutableList(limit + 1) { true }
        sieve[0] = false
        sieve[1] = false
    
        var p = 2
        while (p * p <= limit) {
            if (sieve[p]) {
                var i = p * p
                while (i <= limit) {
                    sieve[i] = false
                    i += p
                }
            }
            p++
        }
        return sieve
    }
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.