[LeetCode]204. 计数质数(Count Primes)

题目描述

统计所有小于非负整数 n 的质数的数量。

示例:

输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

解题思路

埃拉托斯特尼筛法(Sieve of Eratosthenes)。

代码

Python 3.6

1
2
3
4
5
6
7
8
9
10
class Solution:
def countPrimes(self, n: int) -> int:
if n < 3:
return 0
origin = [1] * n
origin[0], origin[1] = 0, 0
for i in range(2, int(pow(n, 0.5)) + 1):
if origin[i] == 1:
origin[i * i::i] = [0] * len(origin[i * i::i])
return sum(origin)

执行用时:196 ms
内存消耗:37 MB