统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
解法一
首先很容易想到的就是判断是不是质数,然后相加起来。但是很明显这种做法时间复杂度很高,不知道会不会出现超时,这里介绍网上用的最多的一种方法:
class Solution:
def countPrimes(self, n: int) -> int:
if n<= 2:
return 0
nums = [None]*n
nums[0], nums[1] = False, False
for i in range(n):
if nums[i] == None:
nums[i] = True
for j in range(i + i, n ,i):
nums[j] = False
return sum(nums)
即把不大于根号n的所有素数的倍数剔除,剩下的就是素数。