1、题目描述
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。
2、题解
2.1、解法一
缺点:太慢
class Solution(object):def countPrimes(self, n):""":type n: int:rtype: int"""count = 0flag = [False for i in range(n)]for i in range(2,n):if flag[i] == False:count += 1j = 1while j*i <n:flag[j*i] = Truej+=1return count
2.2、解法二
class Solution(object):def countPrimes(self, n):""":type n: int:rtype: int"""if n < 3:return 0sieve = [1] * (n / 2)for i in range(3, int(n**0.5)+1, 2):if sieve[i/2]:sieve[i*i/2::i] = [0] * ((n-i*i-1)/(2*i)+1)return 1 + sum(sieve[1:])