Count Primes
Count the number of prime numbers less than a non-negative number n.
埃拉托斯特尼筛法: http://open.163.com/movie/2012/10/0/6/M99VJKUHC_M9ENDUB06.html
首先使所有数都为prime(true),循环所有数,使此数平方以后的所有此数的倍数都为false
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
isPrime = [True] * max(n, 2)
isPrime[0], isPrime[1] = False, False
x = 2
while x*x < n:
if isPrime[x]:
p = x*x
while p < n:
isPrime[p] = False
p += x
x += 1
return sum(isPrime)
Last updated
Was this helpful?