题目:
计算n以内的素数个数。
解题思路:
1、首先考虑直接判断n以内的每个数是否为素数。再对结果进行求和。判断某个数是否为素数的方法,之间判断该数能否整除从2到sqrt(n)的数字。若能则是素数,否则不是素数。复杂度为n*sqrt(n)。但在LeetCode会超时。
代码(Python):
class Solution(object):
def countPrimes(self, n):
"""
:type n: int
:rtype: int
"""
if n==0:
return 0
def IsPrime(n):
sqrt_n = int(n**0.5)
for i in range(2,sqrt_n+1):
if (n%i)==0:
return 0
return 1
count = 0
for i in range(2,n):
count+=IsPrime(i)
return count
2、改变判断某数是否为素数的方式,判断该数能否整除从2到sqrt(n)的素数。在LeetCode也会超时
class Solution(object):
def countPrimes(self, n):