力扣:204. 计数质数(Python3)

题目:

给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。

来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

示例:

示例 1:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。


示例 2:

输入:n = 0
输出:0


示例 3:

输入:n = 1
输出:0

解法:

采用Sieve of Eratosthenes,核心思想是数2,3,4,……,n,依次去除2的倍数,3的倍数,4的倍数……

举例,假设2,3,4,……,100,先把2的倍数全部去掉,从2的平方开始去,剩下2,3,5,7,9,……,99。接着把3的倍数全部去掉,从3的平方开始去,剩下2,3,5,7,……,97。从平方开始去的原因是,一个合数可能由多组因数组成,要么两个因数相同,要么一大一小,对于一大一小的情况,理想的处理方式是,遇到小因数的时候去掉合数,遇到大因数的时候不再考虑。而从平方开始去,有助于实现这一思路。比如6,遍历2的时候已经去掉了,所以遍历3的时候没必要考虑,直接从9开始去。因为最小的因数是2并且2的2倍和平方相等,所以不会有遗漏,所以没必要考虑3*2,4*3等类似情况,直接从3*3,4*4开始去。

因为每次从平方开始去,所以只需要遍历到n的开方就可以了。

代码:

class Solution:
    def countPrimes(self, n: int) -> int:
        if n < 3:
            return 0
        nums = [0, 0] + [1] * (n - 2)
        for index in range(2, int(n ** 0.5) + 1):
            if nums[index]:
                nums[index * index::index] = [0] * len(nums[index * index::index])
        return sum(nums)

相关推荐

  1. 204. 计数质数Python3

    2023-12-21 00:26:04       48 阅读
  2. 204题“计数质数

    2023-12-21 00:26:04       7 阅读
  3. 200. 岛屿数量(Python3

    2023-12-21 00:26:04       42 阅读
  4. 201. 数字范围按位与(Python3

    2023-12-21 00:26:04       45 阅读
  5. 205. 同构字符串(Python3

    2023-12-21 00:26:04       52 阅读
  6. 208. 实现 Trie (前缀树)(Python3

    2023-12-21 00:26:04       38 阅读
  7. Leetcode204.计数质数

    2023-12-21 00:26:04       12 阅读
  8. :198. 打家劫舍(Python3

    2023-12-21 00:26:04       42 阅读
  9. 209. 长度最小的子数组(Python3

    2023-12-21 00:26:04       36 阅读
  10. 每日练习(3.20)补

    2023-12-21 00:26:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-21 00:26:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-21 00:26:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-21 00:26:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-21 00:26:04       20 阅读

热门阅读

  1. 周记 从现在开始

    2023-12-21 00:26:04       49 阅读
  2. PyQt 未响应

    2023-12-21 00:26:04       43 阅读
  3. 学习k8s

    学习k8s

    2023-12-21 00:26:04      31 阅读
  4. Android : Kotlin 基础 入门

    2023-12-21 00:26:04       44 阅读
  5. tp连接数据库

    2023-12-21 00:26:04       34 阅读
  6. ElasticSeach--springboot中使用

    2023-12-21 00:26:04       38 阅读
  7. 使用Nvidia Omniverse平台构建Python应用程序的类型

    2023-12-21 00:26:04       40 阅读
  8. c语言实验七

    2023-12-21 00:26:04       35 阅读