厄拉托塞师(Eratosthenes)筛法
Eratosthenes筛法
素数的定义
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
素数是不能继续分解的整数,同样也是关于乘法运算的最小整数元素 。
Eratosthenes筛法及其原理
定理:设n是一个正合数,p是n的一个大于一的因数,则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)筛法相关推荐
- Eratosthenes筛法求1-100之间的素数
/* 写出不超过100的所有的素数. 解 将不超过100的正整数排列如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- 素数(质数)判断、打印素数表(Eratosthenes筛法)、质因子分解————附完整代码
文章目录 1 概念 2 素数的判断 2.1 思想 2.2 实现代码 3 素数表的获取 3.1 朴素算法 3.1.1 思想 3.1.2 3 实现代码 3.2 Eratosthenes筛法 3.2.1 思 ...
- 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 ...
- Eratosthenes筛法求素数
问题: 求正整数N以内的全部素数. 思路: 1.从最小的素数x开始(x称作筛数),将所有N以内的x的倍数删除. 2.接着x为下一个素数,在此将其倍数删除. 3.重复以上操作,剩下的就是素数. 注意: ...
- owasp_我的Google夏天的owasp 2020代码之旅
owasp 社区绑定期(04/05/2020-31/05/2020) (Community Bonding Period (04/05/2020 - 31/05/2020)) During the c ...
- 计算机语言mod(m n),密码技术与物联网安全:mbedtls开发实战最新章节_徐凯著_掌阅小说网...
3.2 素数 定义3-1 设整数n≠0,±1,若除了因数±1和±n之外,n没有其他的因数,那么称n为素数(或质数或不可约数),否则n为合数. 例如,整数2.3.7都是素数,而4.6.10.15.32都 ...
- 哥德巴赫猜想的证明(李扩继)
哥德巴赫猜想是一个纯数学命题,是偶数的分类问题.偶数=奇合数+奇合数=奇合数+素数=素数+素数.本来没有问题的事,可在数学领域里,总要把每一个命题是真的还是假的要判断清楚,德国的一个中学数学教师哥德巴 ...
- 筛法(Sieve of Eratosthenes)
Sieve of Eratosthenes 筛法 百度百科 在数学中,Eratosthenes 筛法是一种古老的算法,用于查找任何给定限制内的所有素数. package mainimport &quo ...
- AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)
给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...
最新文章
- git工具tig用法
- SCCM 2012 R2---配置客户端发现方法和边界组
- es6 Set的几种使用场景
- Mac下Git与Github的简单使用
- 051_Array对象
- LeetCode 309. 最佳买卖股票时机含冷冻期(动态规划)
- access 文本转换数字_LabVIEW访问Access数据库教程
- CVPR 2019 | 旷视提出新型目标检测损失函数:定位更精准
- 阿里云加码 2000 亿,再“出征”新基建!
- 京东排行第一,近 4 万好评,这本 Python 书究竟好在哪?
- monkey测试小记
- orbslam2初始化流程
- Kconfig使用介绍
- 简单的w7-->w10的方法
- 零基础该怎样开始学编程?
- idea设置静态壁纸步骤
- ZStack-ZCCE-网络实验-VPC网络创建
- wordpress文章自动同步天涯博客插件wp2Tianya发布
- 解决视频切片转码后无法无法快进的问题
- java JVM调优总结 -Xms -Xmx -Xmn -Xss