题目描述:统计所有小于非负整数 n 的质数的数量。
解题思路一:线性筛
class Solution:
def countPrimes(self, n: int) -> int:
prime = []
isprime = [True] * n
for i in range(2, n):
if isprime[i]:
prime.append(i)
j = 0
while(j < len(prime) and i * prime[j] < n):
isprime[i * prime[j]] = False
if i % prime[j] == 0:
break
j += 1
return len(prime)
解题思路二:埃氏筛
class Solution:
def countPrimes(self, n: int) -> int:
prime = []
isprime = [True] * n
ans = 0
for i in range(2, n):
if isprime[i]:
ans += 1
for j in range(i*i, n, i):
isprime[j] = False
return ans