打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
算法创作|质数计数问题解决方法
问题描述
统计所有小于非负整数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)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
578,计数质数
Python求100内的所有素数方法是什么?
02神奇数 2017年校招模拟笔试(第三场)
C 经典算法题-完美数
递归法,八皇后问题:在8*8的国际象棋盘上放置8个皇后,使其不能相互攻击
培养学生超前学习的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服