204. 计数质数

题目
首先从 2 开始,我们知道 2 是一个素数,那么 2 × 2 = 4, 3 × 2 = 6, 4 × 2 = 8... 都不可能是素数了。
然后我们发现 3 也是素数,那么 3 × 2 = 6, 3 × 3 = 9, 3 × 4 = 12... 也都不可能是素数了。
我们维护一个list:isprime。初始把isprime全部置为True,然后遍历这个list。如果为true,,表示这个数为质数,则ans加1,然后把当前数字的倍数对应的isprime置为False。如果为False,表明当前这个数为合数,不做任何操作。
class Solution:
def countPrimes(self, n: int) -> int:
isprime = [True] * (n-1)
ans = 0
for i in range(1,n-1):
if isprime[i]:
ans += 1
p = i + i + 1
while p<n-1:
isprime[p] = False
p += i + 1
return ans