统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
解法:
func countPrimes(_ n: Int) -> Int {
if n < 3 {
return 0
}
if n == 3 {
return 1
}
var array = [Bool](repeating: true, count: n)
for i in 2...Int(sqrt(Double(n))) {
if i * i >= n {
break
}
if !array[i] {
continue
}
var j = i * i
while j < n {
array[j] = false
j = j + i
}
}
var count = 0
for i in 2..<n {
if array[i] {
count += 1
}
}
return count
}