zoukankan      html  css  js  c++  java
  • [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)
  • 相关阅读:
    xxx
    部署在自己的加了分享,试下
    疑问
    去掉分享
    womenzijide_jiafenxiang
    womenzijide2
    womenzijide
    xiugai-去除js注释
    xiugai2
    《设计模式之禅》读书笔记(一)——单例模式
  • 原文地址:https://www.cnblogs.com/fcyworld/p/6506429.html
Copyright © 2011-2022 走看看