【Python】使用集合实现筛选法求素数实验

使用集合实现筛选法求素数实验

题目:

输入一个大于 2 的自然数,输出小于该数字的所有素数组成的集合。

实现步骤:

  1. 首先,创建一个包含所有自然数(从2到您输入的自然数)的集合,称为numbers集合。
  2. 创建一个空的集合,用于存储素数,称为prime_numbers集合。
  3. 从2开始,遍历numbers集合中的每个数字:
    • 如果当前数字是素数,则将它添加到prime_numbers集合中。
    • 然后,从numbers集合中删除当前素数的所有倍数,因为它们不可能是素数。
  4. 重复步骤3,直到遍历完numbers集合中的所有数字。
  5. 最后,prime_numbers集合将包含小于您输入的自然数的所有素数。

参考代码:

python 复制代码
# 输入一个大于2的自然数
n = int(input("请输入一个大于2的自然数:"))
if n <= 2:
    print("请输入大于2的自然数。")
else:
    # 创建一个包含所有自然数的集合
    numbers = set(range(2, n + 1))
    prime_numbers = set()

    while numbers:
        current = min(numbers)
        prime_numbers.add(current)
        numbers -= set(range(current, n + 1, current))

    print("小于", n, "的所有素数组成的集合:", prime_numbers)

代码解释:

  1. 我们设定输入数字 n 为 10。

  2. 我们创建一个包含所有自然数的集合 numbers,从2到10,即 {2, 3, 4, 5, 6, 7, 8, 9, 10}

  3. 我们创建一个空集合 prime_numbers,用于存储素数。

  4. 进入循环,首先选取 currentnumbers 集合中的最小数字,即 2。

  5. 我们将 2 添加到 prime_numbers 集合中,并从 numbers 集合中删除2的所有倍数。此时,prime_numbers 变成 {2}numbers 变成 {3, 5, 7, 9}

  6. 重复这个过程,下一个最小数字是3,将其添加到 prime_numbers 集合中,并删除3的倍数。此时,prime_numbers 变成 {2, 3}numbers 变成 {5, 7}

  7. 继续这个过程,一直到 numbers 集合为空。

  8. 最后,程序将输出小于10的所有素数组成的集合:{2, 3, 5, 7}

相关推荐
Hgfdsaqwr6 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
开发者小天6 小时前
python中For Loop的用法
java·服务器·python
老百姓懂点AI7 小时前
[RAG实战] 向量数据库选型与优化:智能体来了(西南总部)AI agent指挥官的长短期记忆架构设计
python
喵手9 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar9 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大9 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手9 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
0思必得010 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
莫问前路漫漫10 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程
木头左10 小时前
Backtrader框架下的指数期权备兑策略资金管理实现与风险控制
python