前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法创作|质数计数问题解决方法

算法创作|质数计数问题解决方法

作者头像
算法与编程之美
发布2021-04-22 15:00:04
3320
发布2021-04-22 15:00:04
举报
文章被收录于专栏:算法与编程之美

问题描述

统计所有小于非负整数n的质数的数量。

示例:

输入:n = 10

输出:4

示例:

输入:n = 1

输出:0

示例:

输入:n = 0

输出:0

提示:0 <= n <= 5 * 106

解决方案

对于每个数 i,我们可以枚举 [2, i-1][2,i-1]区间的任意一个数 j,判断i 能否被j整除,枚举 [2, i-1][2,i−1] 区间的任意一个数j,判断i能否被j整除时,我们可以发现,如果i能够被j整除,那么这里的商也一定能够整除i,也就是i也能够被i/j整除。那么我们只要判断i和i/j其中一个能否整除i即可。

代码清单 1统计所有小于非负整数n的质数的数量

class Solution: def countPrimes(self, n: int) -> int: def is_prime(num): j = 2 while j * j <= num: if num % j == 0: return False j += 1 return True count = 0 for i in range(2, n): if is_prime(i): count += 1 return count

运行代码

结语

此类方法需要较为麻烦,思维较为复杂,需要单次判断每一个数是否为质数,淡然也可以采取枚举法、线性筛等方法,这些方法可能更容易理解,当我们遇到此类问题时,需迅速构建出各种方法,在这之中筛选,选出更简单的方法。

实习编辑:李欣容

作者:查萌雨 岳进 赵柔

稿件来源:深度学习与文旅应用实验室(DLETA)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档