Python 中的简单素数生成器

2023-12-25

有人可以告诉我这段代码做错了什么吗?无论如何,它只是打印“计数”。我只想要一个非常简单的素数生成器(没什么花哨的)。

import math

def main():
    count = 3
    one = 1
    while one == 1:
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0: 
                continue
            if count % x != 0:
                print count

        count += 1

有一些问题:

  • 为什么在未除以 x 时打印出 count ?这并不意味着它是素数,它只是意味着这个特定的 x 不能整除它
  • continue移动到下一个循环迭代 - 但你真的想使用停止它break

这是经过一些修复的代码,它仅打印出素数:

import math

def main():
    count = 3
    
    while True:
        isprime = True
        
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0: 
                isprime = False
                break
        
        if isprime:
            print count
        
        count += 1

对于更有效的素数生成,请参阅埃拉托斯特尼筛法,正如其他人建议的那样。这是一个很好的、优化的实现,有很多评论:

# Sieve of Eratosthenes
# Code by David Eppstein, UC Irvine, 28 Feb 2002
# http://code.activestate.com/recipes/117119/

def gen_primes():
    """ Generate an infinite sequence of prime numbers.
    """
    # Maps composites to primes witnessing their compositeness.
    # This is memory efficient, as the sieve is not "run forward"
    # indefinitely, but only as long as required by the current
    # number being tested.
    #
    D = {}
    
    # The running integer that's checked for primeness
    q = 2
    
    while True:
        if q not in D:
            # q is a new prime.
            # Yield it and mark its first multiple that isn't
            # already marked in previous iterations
            # 
            yield q
            D[q * q] = [q]
        else:
            # q is composite. D[q] is the list of primes that
            # divide it. Since we've reached q, we no longer
            # need it in the map, but we'll mark the next 
            # multiples of its witnesses to prepare for larger
            # numbers
            # 
            for p in D[q]:
                D.setdefault(p + q, []).append(p)
            del D[q]
        
        q += 1

请注意,它返回一个生成器。

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

Python 中的简单素数生成器 的相关文章

  • 我如何在 python 2.6 中测试抽象方法

    我有一个抽象类 import abc class Hello object metaclass abc ABCMeta abc abstractmethod def add self foo pass abc abstractmethod
  • tensorflow Protobuf编译问题

    我想为 google 对象检测 API 编译 protobuf 库 我按照官方教程输入protoc object detection protos proto python out 然后我得到的是 object detection prot
  • 如何有效地从连续字符串中提取文字单词? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将没有空格的文本拆分为单词列表 https stackoverflow com questions 8870261 how to split text without spaces into li
  • Django:将博客条目查看次数增加一。这有效率吗?

    我的索引视图中有以下代码 latest entry list Entry objects filter is published True order by date published 10 for entry in latest ent
  • Python sqlite3参数化删除表

    我在 python 中删除 sqlite3 表时遇到问题 我正在使用标准sqlite3模块 self conn sqlite3 connect sql drop table self conn execute sql u table nam
  • 检测/删除 Python 2 + GTK 中不成对的代理字符

    在Python 2 7中我可以成功转换Unicode字符串 abc udc34xyz 转换为 UTF 8 结果是 abc xed xb0 xb4xyz 但是当我将 UTF 8 字符串传递给例如时 pango parse markup or
  • 从主机名中提取域名

    是否有一种编程方式可以从给定的主机名查找域名 给出 gt www yahoo co jp 返回 gt yahoo co jp 有效但非常慢的方法是 拆分为 并从左侧删除 1 个组 使用 dnspython 加入并查询 SOA 记录 当返回有
  • 类型错误:需要 Future 或协程

    我尝试在 asyncssh 上自动重新连接 ssh 客户端 SshConnectManager 必须留在后台并在需要时进行 ssh 会话 class SshConnectManager object def init self host u
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • Python,多线程,获取网页,下载网页

    我想在一个站点批量下载网页 我的 urls txt 文件中有 5000000 个 url 链接 大约有300M 如何让多线程链接这些网址并下载这些网页 或者如何批量下载这些网页 我的想法 with open urls txt r as f
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav
  • Qcut Pandas:ValueError:Bin 边缘必须是唯一的

    我使用 Pandas 中的 Qcut 将数据离散化为大小相等的存储桶 我想要有价格桶 这是我的数据框 productId sell prix categ popularity 11997 16758760 0 28 75 50 524137
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使

随机推荐

  • 在 webpack 中传递环境相关变量

    我正在尝试将 Angular 应用程序从 gulp 转换为 webpack 在 gulp 中 我使用 gulp preprocess 来根据 NODE ENV 替换 html 页面中的一些变量 例如数据库名称 使用 webpack 实现类似
  • Python tkinter 树视图列大小

    我有一个Treeview in tkinter Linux 上的 Python 3 6 但 Windows 上也会发生同样的情况 我用它来模拟一种电子表格布局 我的问题是 如果我运行下面的示例代码 并调整 第 1 列 的大小 那么随着 第
  • 导出ipa文件失败

    使用 Xcode v11 3 我尝试导出 IPA 文件并收到此错误 导出期间发生错误 因此无法读取数据 格式不正确 这显示在 IDEDistribution standard log 中 System Library Frameworks
  • Cruise 与 TeamCity 与 CruiseControl.net [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 单例 PDO 模型 - 层次结构

    抱歉英语不好 我是巴西人 更糟糕的是谈论编程 我们走吧 我有这个 class DataBase extends PDO var object PDO private static instance Cria uma inst ncia do
  • 查找:-exec 缺少参数

    今天我得到了一个命令的帮助 但它似乎不起作用 这是命令 find home me download type f name rm exec ffmpeg i sameq mp3 rm 外壳返回 find missing argument t
  • 重新启动 gif 动画而不重新加载文件

    是否可以重新启动 gif 动画而不需要每次都下载文件 我当前的代码如下所示 var img new Image img src imgages src myImage gif id css background image url img
  • java.io.InvalidClassException:没有有效的构造函数

    当我运行下面的程序时 我收到异常 java io InvalidClassException Files SerializationMain Files SerializationMain no valid constructor at j
  • Databricks JDBC 集成安全性

    帮助 我需要使用我的 Azure AD 凭据从 Azure databricks 集群连接到 SQL Azure 实例 我已经测试过了 我可以通过我的 Azure AD 凭据使用 SSMS SQL Server Management Stu
  • 订阅 Angular 2

    我希望我的 ngOnInit 函数做接下来的事情 使用 this structRequest sendRequest 发出一些数据的 http 请求 效果很好 并且在收到数据后开始使用 this viewNodes 函数查看它 我使用 su
  • 网站图标必须为 32×32 或 16×16 吗?

    我想使用单个图像作为常规图标和 iPhone iPad 友好图标 这可能吗 如果作为常规浏览器图标链接 iPad 友好的 72 72 PNG 会缩放吗 或者我是否必须使用单独的 16 16 或 32 32 图像 2020 年更新 坚持 16
  • 检测倾斜字体中单词之间的空格(条)

    我编写了一个 python 脚本来检测图像中编码的字母 该脚本正在使用openCV模板匹配匹配图像中嵌入的字符 字母 除空格 空格键 字符外 检测工作正常 Here is a sample image 在 python 中是否有一些 简单
  • Pandas DataFrame 访问器类型提示

    Pandas 允许您使用以下方法扩展其 DataFrame 类pd api extensions register dataframe accessor 装饰师 虽然这是功能性的 但它不提供任何额外的类型提示功能 例如 我希望以下内容能够键
  • 视角约束有什么意义?

    在哪视图约束 http download oracle com docs cd B14117 01 server 101 b10759 clauses002 htm i1002565有用 我的意思是 Oracle 允许在视图上创建约束 它们
  • 用 AppCompat 替换 ActionBarSherlock

    我目前正在开发一个简单的导航抽屉 滑动选项卡 然而 我希望在我自己的应用程序上进行材料设计 所以 除了摆脱 我别无选择ActionBarSherlock 在这些尝试中 我发现有两种类型的导入 如下所示 import com actionba
  • 由属性公开的私有变量[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我搜索了一些文档 并尝试了 Xcode 和 AppCode 但我仍然对一些事情不确定 那么有人可以澄清我吗 如果我有名为 foo 的属性 是否应
  • Visual Studio 构建步骤和 MSBuild 构建步骤之间的差异

    我正在创建一些构建定义 我发现 Visual Studio 构建步骤和 MSBuild 构建步骤之间的唯一区别是 VS 构建步骤将 Visual Studio 版本添加到构建中 有人可以解释更多差异吗 正如丹尼尔提到的 它们几乎是一样的 主
  • 如何使用 Obj-C 轻松保存窗口大小和位置状态?

    使用 Obj C 记住应用程序加载之间的 Windows 位置的最佳方法是什么 我正在使用 Interface Builder 作为界面 是否可以通过绑定来做到这一点 推荐的方法是什么 谢谢 在 Interface Builder 的属性下
  • Nivoslider 更新或重启甚至销毁

    我在加载动态内容时尝试更新 nivoslider 时遇到一些问题 我需要做的是当我通过加载新内容时更新滑块AJAX call 所以基本上我有一个 div 从函数中获取新数据AJAX调用并在加载后我需要滑块重新初始化 我现在做的是这样的 if
  • Python 中的简单素数生成器

    有人可以告诉我这段代码做错了什么吗 无论如何 它只是打印 计数 我只想要一个非常简单的素数生成器 没什么花哨的 import math def main count 3 one 1 while one 1 for x in range 2