首页 > 代码库 > [leetcode]204. Count Primes
[leetcode]204. Count Primes
统计小于n的素数的个数
如果判断每一个数是不是素数的话,时间会超时,如下
1 class Solution(object): 2 def countPrimes(self, n): 3 """ 4 :type n: int 5 :rtype: int 6 """ 7 c = 0 8 for i in range(2,n): 9 if self.isprime(i): 10 c += 1 11 return c 12 13 def isprime(self,n): 14 n = int(n**0.5)+1 15 for i in range(2,n): 16 if not n%i: 17 break 18 else: 19 return True 20 return False
题意要统计素数的个数,那么可以换一种思路,每发现一个素数i,那么i^2,i^2+i...都肯定不是素数
1 class Solution(object): 2 def countPrimes(self, n): 3 """ 4 :type n: int 5 :rtype: int 6 """ 7 if n<3: 8 return 0 9 flag = [True]*n 10 flag[0],flag[1] = False,False 11 for i in range(2,int(n**0.5+1)): 12 if flag[i]: 13 flag[i*i:n:i] = [False]*len(flag[i*i:n:i]) 14 return sum(flag)
[leetcode]204. Count Primes
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。