使用埃氏筛,从2开始把没有被标记过的(是质数的)数的倍数标记为0,最后统计2到n中没有被标记的即为质数。
class Solution:
def countPrimes(self, n: int) -> int:
lis = [1] * n
for i in range(2, int(n**0.5)+1):
if lis[i]:
for j in range(i*i, n, i):
lis[j] = 0
ans = 0
for i in range(2, n):
if lis[i]:
ans += 1
return ans