Python 中的埃拉托斯特尼筛法

2024-02-14

我正在尝试编写一个python函数来返回小于给定值的素数个数以及所有素数的值。我需要使用埃拉托斯特尼筛法算法。我相信我在函数中遗漏了一些东西 - 例如,当我想找到 100 以下的素数时。我得到的只是 2、3、5、7。我知道如果我不使用“平方根” ,我可以获得我需要的所有素数;但我被告知我需要在那里包含平方根。有人可以看一下我的代码并让我知道我缺少什么吗?谢谢你的时间。

def p(n):
is_p=[False]*2 + [True]*(n-1)
for i in range(2, int(n**0.5)):
    if is_p[i]:
        yield i
        for j in range(i*i, n, i):
            is_p[j] = False

“我被告知我需要使用平方根”。你认为这是为什么?通常,E. 的筛子用于从列表中删除所有“非素数”数字;您可以通过找到一个素数,然后检查列表中该素数的所有倍数来做到这一点。下一个“未核对”的数字是您的下一个素数 - 您报告它(用yield),然后再次继续检查。您只需要检查小于平方根的因子 - 大于平方根的因子有一个小于平方根的相应因子,因此它们已经被发现。

不幸的是,当涉及到打印素数时,你不能“停在中间”。例如,101是素数;但如果你只循环到 11,你将永远不会发现它在那里。所以需要分两步:

1)循环所有“可能的倍数” - 在这里你可以“仅达到平方根”

2)检查列表中所有尚未核对的号码 - 这里你必须“一路走到底”

这使得以下代码:

def p(n):
  is_p=[False]*2 + [True]*(n-1)
  for i in range(2, int(n**0.5)):
    if is_p[i]:
        for j in range(i*i, n, i):
            is_p[j] = False
  for i in range(2, n):
    if is_p[i]:
      yield i

print list(p(102))

结果是一个素数列表,包括101.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的埃拉托斯特尼筛法 的相关文章

  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • Python CSV Writer 在文件末尾留下一个空行

    以下代码在 txt 文件末尾留下一个空白行 我怎样才能不让 writerows 不终止最后一行 with open fname wb as myFile Start the CSV Writer wr csv writer myFile d
  • 生成 Flask 中使用的签名会话 cookie 值

    我正在用另一个需要将项目注入会话的 Flask 服务器代理 Flask 服务器 两台服务器具有相同的密钥 因此加密签名将相同 当使用 Flask 和会话时 http 响应包含一个 Set Cookie 标头session text 其中 t
  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • 如何在 Python 2.4 CSV 阅读器中禁用引用?

    我正在编写一个 Python 实用程序 需要解析一个我无法控制的大型且定期更新的 CSV 文件 该实用程序必须在仅提供 Python 2 4 的服务器上运行 CSV 文件根本不引用字段值 但Python 2 4版本的csv库 http ww
  • 如何将 UPX 与 pyinstaller 一起使用?

    如何将 UPX 与 pyinstaller 一起使用 我正在关注文档 我已经下载了UPX 我的文件如下所示 import csv import selenium import pandas print Hello 然后我运行 pyinsta
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • 如何将嵌套的Python字典转换为简单的命名空间?

    假设我有一个深度为 N 的嵌套字典 如何将每个内部嵌套字典转换为简单的命名空间 example input key0a test key0b key1a key2a keyNx key2b test key1b test example o
  • Python 中嵌套列表的排序和分组

    我有以下数据结构 列表的列表 4 21 1 14 2008 10 24 15 42 58 3 22 4 2somename 2008 10 24 15 22 03 5 21 3 19 2008 10 24 15 45 45 6 21 1 1
  • 为什么最简单的 requests_mock 示例在 pytest 中失败?

    我有一个特殊的问题requests mock 我想用它pytest测试我的 API 包装器库 我尝试过使用requests mock 文档中的第一个示例 http requests mock readthedocs io en latest
  • 自定义 Keras 损失函数中的 conv2d

    我正在尝试基于两个图像的拉普拉斯算子在带有 TF 后端的 Keras 中实现自定义损失函数 def blur loss y true y pred weighting of blur loss alpha 1 mae losses mean
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 如何使直方图列的宽度都相同

    我在操作直方图时遇到了一些麻烦 我有一个包含两列的 df 我将它们绘制为堆叠直方图 我将它们放入特定的垃圾箱中 请参阅下面的代码 但我想在最后制作一个大垃圾箱 4000 10000 但是 默认情况下 大垃圾箱的列宽很大 有没有办法让这个大垃
  • 在 python 中使用 subprocess.call 时如何将 stdout 重定向到文件?

    我正在从另一个 python 脚本 A 调用一个 python 脚本 B 使用 subprocess call 如何将 B 的标准输出重定向到指定的文件 我正在使用 python 2 6 1 传递一个文件作为stdout参数为subproc
  • 导入我自己的模块时出现“ImportError:没有名为...的模块”

    我正在尝试导入模块 但不断收到导入错误 在 PortfolioStatus py 文件中 我有以下代码 它从 share data py 模块导入 share data 类 from Shares share data import sha
  • Python itertools groupby 中令人不安的奇怪行为/错误?

    我在用itertools groupby解析一个短的制表符分隔的文本文件 文本文件有几列 我想做的就是对具有特定值的所有条目进行分组x在特定的列中 下面的代码对名为的列执行此操作name2 寻找变量中的值x 我尝试使用以下方法来做到这一点c
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • python 相当于 sed

    有没有一种方法 无需双循环即可完成以下 sed 命令的操作 Input Time Banana spinach turkey sed i Banana s Toothpaste file Output Time BananaToothpas
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d
  • 使用 TkInter 绑定设置不可交互(点击)覆盖

    我已经浏览了其他几篇关于类似问题的帖子 所有这些似乎都指向this https stackoverflow com questions 29458775 tkinter see through window not affected by

随机推荐

  • 我使用的是哪个版本的 python time 模块

    如何确定安装了哪个版本的 python 模块 time 对于其他模块 version version or version 工作 但是时间上 这两种方法都会返回错误 模块 对象没有属性 version 或 版本 Module time内置于
  • Google Analytics Regex - 无负向前瞻的替代方案

    Google Analytics 分析 在其过滤器中不再允许负向前瞻 事实证明 创建仅包含我希望包含的链接的自定义报告非常困难 包含负向前瞻的正则表达式在启用时可以工作 test com index php s 这匹配 test com t
  • 聚合 MongoDB 中子文档的总计

    我有一个如下所示的文档 我本质上想为子文档中的项目生成一个聚合 本质上 每个文档都是一个销售记录 其中包含销售详细信息和包含每个商品销售数量的子文档 数组 我想生成所有已售商品的摘要 因此 一个示例集合是 non relevant 1 AB
  • 在训练期间评估模型会影响其性能 PyTorch

    In PyTorch 我想在验证集上评估我的模型eval step在训练期间 我写了这样的代码 def tune model loader train loader dev optimizer epochs eval step for ep
  • 防止 Spring WebFlow 应用程序中的跨站点请求伪造

    我正在寻找一种 希望是简单的 添加方法CSRF http www codinghorror com blog 2008 10 preventing csrf and xsrf attacks html对基于 Spring WebFlow 2
  • Spring的@Cacheable注释可以与注释方法的bean具有相同的作用域吗?

    有没有简单的方法来使用 Spring Cacheable使用非单例 例如会话范围 bean 进行注释并使缓存与所述 bean 具有相同的范围 Example import javax inject Inject import javax i
  • 如何在大事务下获得高性能(postgresql)

    我有 200 万条数据需要插入到 postgresql 中 但它却发挥了低效的表现 我可以通过将大事务分割成较小的事务来实现高性能插入器 实际上 我不想这样做 或者 还有其他明智的解决方案吗 不 更快的主要想法是在一个事务中完成所有插入 多
  • 为什么 CREATE VIEW 必须是批处理中的第一个语句? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 CREATE VIEW 必须是批处理中的第一个语句是否有任何逻辑原因 这样的设计背后的原理是什么 与其说它一定是first批处理中的声明 而是它
  • 处理 ARM 芯片的保留寄存器位

    我正在使用 ARM Cortex M3 的寄存器 在文档中 某些位可能是 保留的 我不清楚在寄存器上写入时应该如何处理这些保留位 这些保留位是否可写 我应该小心不要碰它们吗 如果我碰它们 会发生什么不好的事情吗 这是关于如何处理保留位的经典
  • 一次推送两条路由时不会调用 RouteAware didPushNext

    当同时推送两条路线到Navigator并使用RouteAware获取时 更新了当前状态 第一个路由的 didPopNext 没有 叫 似乎调用了 RouteObserver didPush 将调用 didPushNext 对于调用 Firs
  • 将图像 2 重叠在图像 1 上

    我们在网站中显示 image1 如下 现在我们提供上传 image2 的选项 我们想要上传的 image2 应该与现有的 image1 重叠 例如here http www dailyobjects com custom cases app
  • ABAP中的求值顺序

    ABAP 是否有明确的评估顺序 例如 在表达式中foo bar 是否可以保证哪种方法foo and bar 首先评估 执行 在 ABAP 关键字文档中找不到此类信息 ABAP 文档 arith exp 算术运算符 https help sa
  • 在哪里可以下载所有聚合物元素的 zip 文件?

    Polymer 1 0 最近发布了 我可以在elements polymer project org https elements polymer project org 网站 但我找不到一个简单的链接来下载一个大 zip 文件中的所有内容
  • #define 与运算符一起使用[重复]

    这个问题在这里已经有答案了 我知道 define具有以下语法 define SYMBOL string例如 如果我写 define ALPHA 2 1 define BETA ALPHA 2 then ALPHA 1 but BETA 0
  • 我应该如何在类和应用程序层之间传递数据?

    例如 如果我正在创建一个 3 层应用程序 数据 业务 UI 并且数据层正在抓取单个或多个记录 在发送到业务层之前 是否将数据层中的所有内容转换为通用列表 集合 发送数据表可以吗 将信息发送回数据层怎么样 如果我使用对象 列表 这些成员是数据
  • iPhone:如何拖动或移动 UIImage/UIButton,如下所示?

    我不知道如何在我的应用程序中获得以下类型的功能 如上图所示 用户可以滑动 拖动 不同的图像部分 并可以组合图像 谁能告诉我这是哪一个控件 或者有什么教程吗 查看 MoveMe 示例应用程序 它将向您展示如何通过触摸和拖动来移动子视图 然后
  • FileLocator.resolve(url) 的转义结果

    方法FileLocator resolve url 可用于翻译地址bundleentry something somewhere x txt到正确的文件 URL mnt foo somewhere x txt 然而 这也记录在https b
  • MFC和ATL之间的根本区别是什么?

    假设我是only将它们用于 普通 GUI 程序 没有 COM 没有 ActiveX 没什么花哨的 我将看到 ATL 和 MFC 之间的根本区别是什么 以帮助我弄清楚使用哪一个 我在网上做了一些搜索 但最终没有一个答案真正回答了我的问题 ht
  • 当 MATLAB 找不到我要打开的文件时,阻止 MATLAB 创建新文件

    我经常尝试使用以下命令从 MATLAB 命令窗口打开现有的 MATLAB 文件 edit exampleFile 或者 我可以按cmd shift D并在编辑器中突出显示要打开的函数的名称 但是 如果在使用这两种方法时我希望打开的函数不在路
  • Python 中的埃拉托斯特尼筛法

    我正在尝试编写一个python函数来返回小于给定值的素数个数以及所有素数的值 我需要使用埃拉托斯特尼筛法算法 我相信我在函数中遗漏了一些东西 例如 当我想找到 100 以下的素数时 我得到的只是 2 3 5 7 我知道如果我不使用 平方根