python leetcode-204 Count Primes 质数计数

title: "leetcode-204 Count Primes 质数计数"

我的博客 https://zszdata.com/2019/03/09/count-primes/

Count Primes

Count the number of prime numbers less than a non-negative number, n.

Example:

Input: 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.
Solution:

1:

class Solution:
    def countPrimes(self, n: int) -> int:
        count = 0
        for i in range(2,n):
            for j in range(2,i):
                if i%j == 0:
                    break
            else:
                count += 1
        return count
        

This solution could work but time limit exceeded. Complexity of this solution is O(n2).超时了。

2:

如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。
因为如果最小质因数已经大于平方根了,那么大的质因数就要大于平方根,两个质因数相乘肯定大于这个数。所以只需要判断这个数是否能被小于其平方根的所有数整除。

    def countPrimes(self, n: int) -> int:
        if n <= 2:
            return 0
        else:
            res = 0
        for i in range(2, n):
            isPrime = 0
            for j in range(2, int(i**0.5)+1):
                if i%j ==0:
                    isPrime = 1
            if isPrime == 0:
                res += 1
        return res

还是超时了。。

3:

Eratosthenes 埃拉托斯特尼筛法


gif
  1. 是质数,同时划去所有2的倍数,接着查看剩下的数
  2. 是质数,同时划去所有3的倍数,接着查看剩下的数
  3. 一直进行到n的平方根(向上取整)。

sol2经验:只需要判断小于等于平方根的所有数

    def countPrimes(self, n: int) -> int:
        if n <= 2:
            return 0
        else:
            output = [1]*n
            output[0],output[1] = 0,0
            for i in range(2,int(n**0.5)+1):
                if output[i] == 1:
                    output[i*i:n:i] = [0]*len(output[i*i:n:i])
        return sum(output)
    
pic

pic
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,697评论 0 5
  • 第一单元简易方程 1、表示相等关系的式子叫做等式。 2、含有未知数的等式是方程。 3、方程一定是等式;等式不一定是...
    七月小七阅读 1,358评论 0 0
  • 2017年第22届华杯赛初赛眼看着就要来了,翻过年就该2017成都小升初择校了,很多家长在后台问小升初考哪些数学知...
    1a068af8ad5a阅读 589评论 0 1
  • 为什么袭人觉得宝钗做二奶奶比黛玉更好? 是宝钗更贤惠吗?大概不是吧。大概是看出来宝钗对宝玉不是男女之情,因而没什么...
    小木山庄的溜溜阅读 311评论 3 2
  • 第10章实例,有大量翔实且阐明重点的例子;年轻夫妇与过度关心他们的父母的问题,青少年与父母的互动方式问题,女下属与...
    dongdongduo阅读 90评论 0 0