Eratosthenes筛法

素数的定义

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

素数是不能继续分解的整数,同样也是关于乘法运算的最小整数元素

Eratosthenes筛法及其原理

定理:设n是一个正合数,pn的一个大于一的因数,则p一定是素数,且p ≤ √n

根据该定理则可得到一个整数为素数的判别法则

定理:设n > 1,若对所有的素数p ≤ √n,有p不整除n,则n是素数

应用该定理,则可得到一个寻找素数的确定性方法—— Eratosthenes筛法

Eratosthenes筛法

对任意给定正整数N,要求所有不超过N的素数。我们列出N个整数,从中删除≤ √N的所有素数p1, . . . , pk的倍数。

p1的倍数 2p1, 3*p1, … ,[N/p1]p1
p2的倍数 2p2, 3*p2, … ,[N/p2]p2
pk的倍数 2pk, 3*pk, … ,[N/pk]pk

例:

代码实现

代码描述:
  • 采用递归思想,若n <= 10,则直接返回10以内素数
  • n > 10,则递归返回√n以内的素数到列表prime
  • 新建一个从0 - n 的自然数列表
  • 根据prime中的素数,进行筛选
def Algorithm_Eratoshenes(n):prime_ls = []if n <= 10:prime = [2, 3, 5, 7]  # 原始素数集合return primeelse:for i in range(2, n + 1):prime_ls.append(i)prime = Algorithm_Eratoshenes(int(n ** (1 / 2)))  # 递归获得新的素数集for i in prime:  # 筛选k = 2while i * k <= n:if i * k in prime_ls:prime_ls.remove(i * k)k = k + 1else:k = k + 1return prime_ls
执行结果

厄拉托塞师(Eratosthenes)筛法相关推荐

  1. Eratosthenes筛法求1-100之间的素数

    /* 写出不超过100的所有的素数. 解  将不超过100的正整数排列如下: 1   2   3   4   5   6   7   8   9  10 11  12  13  14  15  16  ...

  2. 素数(质数)判断、打印素数表(Eratosthenes筛法)、质因子分解————附完整代码

    文章目录 1 概念 2 素数的判断 2.1 思想 2.2 实现代码 3 素数表的获取 3.1 朴素算法 3.1.1 思想 3.1.2 3 实现代码 3.2 Eratosthenes筛法 3.2.1 思 ...

  3. Eratosthenes,筛法求素数

    //筛法求区间[0,n]的所有素数,v为素数表 //v[i]==0,i为素数 void f(int n) {int m=sqrt(n+0.5);memset(v,0,sizeof(v));for (i ...

  4. Eratosthenes筛法求素数

    问题: 求正整数N以内的全部素数. 思路: 1.从最小的素数x开始(x称作筛数),将所有N以内的x的倍数删除. 2.接着x为下一个素数,在此将其倍数删除. 3.重复以上操作,剩下的就是素数. 注意: ...

  5. owasp_我的Google夏天的owasp 2020代码之旅

    owasp 社区绑定期(04/05/2020-31/05/2020) (Community Bonding Period (04/05/2020 - 31/05/2020)) During the c ...

  6. 计算机语言mod(m n),密码技术与物联网安全:mbedtls开发实战最新章节_徐凯著_掌阅小说网...

    3.2 素数 定义3-1 设整数n≠0,±1,若除了因数±1和±n之外,n没有其他的因数,那么称n为素数(或质数或不可约数),否则n为合数. 例如,整数2.3.7都是素数,而4.6.10.15.32都 ...

  7. 哥德巴赫猜想的证明(李扩继)

    哥德巴赫猜想是一个纯数学命题,是偶数的分类问题.偶数=奇合数+奇合数=奇合数+素数=素数+素数.本来没有问题的事,可在数学领域里,总要把每一个命题是真的还是假的要判断清楚,德国的一个中学数学教师哥德巴 ...

  8. 筛法(Sieve of Eratosthenes)

    Sieve of Eratosthenes 筛法 百度百科 在数学中,Eratosthenes 筛法是一种古老的算法,用于查找任何给定限制内的所有素数. package mainimport &quo ...

  9. AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)

    给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...

最新文章

  1. git工具tig用法
  2. SCCM 2012 R2---配置客户端发现方法和边界组
  3. es6 Set的几种使用场景
  4. Mac下Git与Github的简单使用
  5. 051_Array对象
  6. LeetCode 309. 最佳买卖股票时机含冷冻期(动态规划)
  7. access 文本转换数字_LabVIEW访问Access数据库教程
  8. CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准
  9. 阿里云加码 2000 亿,再“出征”新基建!
  10. 京东排行第一,近 4 万好评,这本 Python 书究竟好在哪?
  11. monkey测试小记
  12. orbslam2初始化流程
  13. Kconfig使用介绍
  14. 简单的w7-->w10的方法
  15. 零基础该怎样开始学编程?
  16. idea设置静态壁纸步骤
  17. ZStack-ZCCE-网络实验-VPC网络创建
  18. wordpress文章自动同步天涯博客插件wp2Tianya发布
  19. 解决视频切片转码后无法无法快进的问题
  20. java JVM调优总结 -Xms -Xmx -Xmn -Xss

热门文章

  1. 能自我学习的AI 能辨识20种乐器声音
  2. python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
  3. 看门狗的喂法(独立看门狗和窗口看门狗的区别)!
  4. UCOS-III笔记
  5. 跟着明星在元宇宙炒房,靠谱吗?
  6. 谷歌浏览器打开显示2345或360等其他主页的解决方法
  7. hive sql 向上取整、向下取整、保留小数位的函数
  8. 想从事次世代游戏角色建模,该如何学好人体和五官的雕刻?
  9. 五分钟实现 pdf 分页
  10. 企业电销如何获得高质量精准流量,大数据获客直击精准客流