LeetCode.jpg
案例1:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
质数的定义:质数
func countPrimes(_ n: Int) -> Int {
if n < 3 {
return 0
}
var count = 1
//判断大于3的奇数
for i in 3..<n where i % 2 != 0 {
if isPrime(i) {
print(i)
count += 1
}
}
return count
}
func isPrime(_ n: Int) -> Bool {
//为了下面的for循环能正常进行,在这里加这个判断,只有3不满足下面循环条件
if n == 3 {
return true
}
//对N开根号
for i in 2...Int(sqrt(Double(n))) {
if n % i == 0 {
return false
}
}
return true
}
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
}
执行用时:420ms