1. ๋ฌธ์
2. ์ ์ถ๋ ฅ
3. ์ ์ถ๋ ฅ ์์
4. ๋ฌธ์ ์ค๊ณ
- ํน์ ์ซ์๊ฐ ์์์ธ์ง ์๋์ง ํ๋ณํ๋ ๊ฒ์ ์ ๊ณฑ๊ทผ๊น์ง ์ง์ ๋๋์ด๋ณด๋ ๊ฒ์ด ๋น ๋ฅด์ง๋ง,
- ํน์ ๋ฒ์๋ด์ ๋ชจ๋ ์์๋ฅผ ๊ตฌํ๊ธฐ ์ํด์๋ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๊ฐ O(N log N)์ผ๋ก ๋ ํจ์จ์ ์
- ๋ฐ๋ผ์ 2๋ถํฐ 2 * n ๊น์ง์ ๋ชจ๋ ์์๋ฅผ ๊ตฌํ๊ณ , n + 1 ๋ถํฐ 2 * n(n๋ณด๋ค ํฌ๊ณ 2 * n ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์) ์์์ ๊ฐ์๋ฅผ ๊ตฌํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์
5. ์ ์ฒด ์ฝ๋
//
// main.swift
// Chebyshevtheo
//
// Created by ์ด์์ฌ on 2022/03/08.
//MARK: - chebyshevtheo
//MARK: - Framework
import Foundation
//MARK: - Function
func getPrimeNumberCount(_ number: Int) -> Int {
var primeNumbers: [Bool] = Array(repeating: true, count: 2 * number + 10)
var primeNumberCount: Int = 0
primeNumbers[1] = false
for i in 2...(2 * number) {
var j: Int = 2
while i * j <= 2 * number {
primeNumbers[i * j] = false
j += 1
}
}
for i in number + 1...2 * number {
primeNumberCount += primeNumbers[i] ? 1 : 0
}
return primeNumberCount
}
func solution() -> Void {
var answer: String = ""
while true {
//MARK: - Input
guard let n: Int = Int(readLine() ?? "0") else { return }
//MARK: - Process
if n == 0 {
break
}
answer += "\(getPrimeNumberCount(n))\n"
}
//MARK: - Output
print(answer, terminator: "")
}
solution()
์ ์ฒด์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
'Swift Data Structure And Algorithm > Basic Number Theory' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Adv. ์์ ํ๋ณ (0) | 2022.04.18 |
---|---|
ํ์ค์นผ ์ผ๊ฐํ (0) | 2022.04.18 |
pfactorization (0) | 2022.03.08 |
fmttalpha (0) | 2022.03.08 |
streetree (0) | 2022.03.08 |