1. 题目
2. 考点
质子 = 只能被1和本身相除的数。 1不是质子。 需要考虑优化怎么计算质子
3. 核心代码
class Solution:
def countPrimes(self, n: int) -> int:
isPrimes = [1] * n
res = 0
for i in range(2, n):
if isPrimes[i] == 1: res += 1
j = i
while i * j < n:
isPrimes[i * j] = 0
j += 1
return res
优化代码
class Solution:
def countPrimes(self, n: int) -> int:
if n <= 2: return 0
prime = [1] * n
prime[0] = prime[1] = 0
for i in range(2, int(n ** 0.5) + 1):
if prime[i] == 1:
prime[i * i:n:i] = [0] * len(prime[i * i:n:i])
return sum(prime)