-
Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 17103 λ²2024. 3. 23. 16:26λ°μν
골λλ°ν νν°μ
λ¬Έμ |
- 골λλ°νμ μΆμΈ‘: 2λ³΄λ€ ν° μ§μλ λ μμμ ν©μΌλ‘ λνλΌ μ μλ€.
μ§μ Nμ λ μμμ ν©μΌλ‘ λνλ΄λ ννμ 골λλ°ν νν°μ μ΄λΌκ³ νλ€. μ§μ Nμ΄ μ£Όμ΄μ‘μ λ, 골λλ°ν νν°μ μ κ°μλ₯Ό ꡬν΄λ³΄μ. λ μμμ μμλ§ λ€λ₯Έ κ²μ κ°μ νν°μ μ΄λ€.
μ λ ₯ |
첫째 μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μ T (1 ≤ T ≤ 100)κ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ μΌμ΄μ€λ ν μ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , μ μ Nμ μ§μμ΄κ³ , 2 < N ≤ 1,000,000μ λ§μ‘±νλ€.
μΆλ ₯ |
κ°κ°μ ν μ€νΈ μΌμ΄μ€λ§λ€ 골λλ°ν νν°μ μ μλ₯Ό μΆλ ₯νλ€.
νμ΄ |
μ λ ₯λ°μ Nμ 2λΆν° N/2κΉμ§ forλ¬Έμ λλ € ν΄λΉ κ°μ΄ μμμ΄λ©΄, Nμμ ν΄λΉ κ°μ λΊ μκ° μμμΈμ§ boolean κ°μ ꡬνλ€. λ§μ½, λ λ€ μμμ΄λ©΄ countμ κ°―μλ₯Ό 1 λλ¦°λ€.
λ΅μ |
fun main() { val T = readLine()!!.toInt() repeat(T) { val N = readLine()!!.toInt() println(countGoldbachPartitions(N)) } } fun countGoldbachPartitions(N: Int): Int { var count = 0 for (i in 2..N / 2) { if (isPrime(i) && isPrime(N - i)) { count++ } } return count } fun isPrime(num: Int): Boolean { if (num == 1) { return false } else if (num == 2) { return true } else { for (i in 2..(Math.sqrt(num.toDouble())).toInt()) { if (num % i == 0) { return false } } return true } }
^ μκ°μ΄κ³Όλ μ½λ...
μ΄μ λ¬Έμ μμ λ€λ£¨μλ μλΌν μ€ν λ€μ€μ 체 μκ³ λ¦¬μ¦ μ¬μ©
fun main() { val T = readLine()!!.toInt() val limit = 1000000 // μ£Όμ΄μ§ μ΅λ N κ° val primes = sieveOfEratosthenes(limit) // μμ 리μ€νΈλ₯Ό 미리 ꡬνλ€. repeat(T) { val N = readLine()!!.toInt() println(countGoldbachPartitions(N, primes)) } } fun sieveOfEratosthenes(limit: Int): BooleanArray { val sieve = BooleanArray(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 } fun countGoldbachPartitions(N: Int, primes: BooleanArray): Int { var count = 0 for (i in 2..N / 2) { if (primes[i] && primes[N - i]) { count++ } } return count }
λ°μν'π Algorithm > π λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 13909 λ² (0) 2024.03.24 Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 4948 λ² (0) 2024.03.14 Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 1929 λ² (0) 2024.03.13 Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 4134 λ² (0) 2024.03.12 Kotlin π¬ λ°±μ€ 15λ¨κ³ :: 2485 λ² (0) 2024.03.11