美文网首页LeetCode刷题
[LeetCode]204. 计数质数

[LeetCode]204. 计数质数

作者: 杏仁小核桃 | 来源:发表于2018-11-19 19:58 被阅读5次

204. 计数质数
统计所有小于非负整数 n 的质数的数量。
示例:
输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

厄拉多塞筛法

最常见的判断n是否是质数的思路就是逐个遍历2~n^0.5之间的数能否被n整除, 若能整除则不是质数, 不能整除则是质数.
然而这个算法的时间复杂度是O(n^2), 当n特别大时肯定会超时, 在LeetCode中提交不会通过.
这时该用到厄拉多塞筛法, 实现步骤: 从2开始遍历到根号n,先找到第一个质数2,然后将其所有的倍数全部标记出来,然后到下一个质数3,标记其所有倍数,一次类推,直到根号n,此时数组中未被标记的数字就是质数。我们需要一个n-1长度的bool型数组来记录每个数字是否被标记,长度为n-1的原因是题目说是小于n的质数个数,并不包括n。

Sieve_of_Eratosthenes_animation.gif
示例代码:
class Solution(object):
  def countPrime(n):
      if n < 3:
          return 0
      prime = [1] * n
      prime[0] = prime[1] = 0
      for i in range(2, int(n**0.5) +1):
          if prime[i] == 1:
              prime[i*i:n:i] = [0]*len(prime[i*i:n:i])
      return sum(prime)

相关文章

  • 如何高效寻找素数

    读完本文,你可以去力扣拿下如下题目: 204.计数质数[https://leetcode-cn.com/probl...

  • 204. 计数质数

    204. 计数质数 最简单的质数筛埃式筛法

  • [LeetCode]204. 计数质数

    204. 计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一...

  • leetcode 204. 计数质数

    。。

  • Leetcode 204. 计数质数

    题目描述 统计所有小于非负整数 n 的质数的数量。 示例 1: 输入: 10 输出: 4 解释: 小于 10 的质...

  • 204. 计数质数

    内容 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10输出: 4解释: 小于 10 的质数一共有 4...

  • 204. 计数质数

    题目 解析 初次拿到这道题时觉得非常简单,只要统计下从2到这个数字之间的数字是不是质数就可以了,按照这个想法就出现...

  • 204. 计数质数

    [toc] leetcode 难度:easy 题目 统计所有小于非负整数 n 的质数的数量。 思路 ==厄拉多塞筛...

  • 204. 计数质数

    题目 统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10输出: 4解释: 小于 10 的质数一共有 4...

  • LeetCodeDay26 —— 计数质数

    204. 计数质数 描述 统计所有小于非负数整数 n 的质数的数量。 示例 思路 一次判断从2~n质数的数量返回,...

网友评论

    本文标题:[LeetCode]204. 计数质数

    本文链接:https://www.haomeiwen.com/subject/rfrafqtx.html