Description:
Count the number of prime numbers less than a non-negative number, n.
解:
筛选法解很容易想到但题目判定时间意外地很严,那就要求不断剪枝了
from math import sqrt as sq
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
self.boolPrime=[True]*n
if n==0 or n==1: return 0
self.boolPrime[0]=False
self.boolPrime[1]=False
sum=0
upper=int(sq(n))
for i in range(2,n):
if self.boolPrime[i]:
j=i
sum+=1
if i>upper+1: continue
while j*i<n:
self.boolPrime[j*i]=False
j+=1
return sum