素数总结(包含素数表)
素数总结
一.素数的定义
- 对于一个大于等于2的正整数n,如果从2,3,…n-1都没有一个数能够整除n,则n为素数
二.素数的判断
bool isPrime(int n) {if(n == 1) {return false;}for(int i=2; i<n; i++) {if(n%i == 0) {return false;}}return true;
}
由数学知识可知,我们并不需要遍历到n-1才截止,只需要遍历到根号n即可
当遍历到根号n都没有一个整除的数,之后肯定是没有的,所以可以进行一个小优化
bool isPrime(int n) {if(n == 1) {return false;}for(int i=2; i<sqrt(n); i++) {if(n%i == 0) {return false;}}return true;
}
三.素数表的获取
在有些算法题中,需要用到素数表,因此我们需要学会素数表的快速获取
1.普通方法(暴力)
//素数表,以及素数个数
int prime[n], pNum = 0;
bool isPrime(int n) {if(n == 1) {return false;}for(int i=2; i<sqrt(n); i++) {if(n%i == 0) {return false;}}return true;
}
void Fine_Prime() {for(int i=1; i<n; i++) {if(isPrime(i) == true) {prime[pNum++] = i;}}
}
- 暴力方法在普通情况下是可以的,但当n较大的时候,时间复杂度会比较大
2.Eratosthenes筛法(埃氏筛法)
基本思路:使用一个标记筛除数组。每当得到一个素数后,将从该数到n之内该数的倍数筛掉
int prime[n], pNum = 0;
//标记数组,初始化false。当为非素数的时候设为true,表示被筛掉
bool p[n] = {true};
void Fine_Prime() {for(int i=2; i<n; i++) {if(p[i]==false) {prime[pNum++] = i;for(int j=i+i; j<n; j+=i) {p[j] = true;}}}
}
注意,埃氏筛法是不需要调用isPrime()函数去判断的。他是将一个一个数逐步筛除,而不是判断标记
可以发现,筛法比非筛法的代码其实更短,而且更高效
素数总结(包含素数表)相关推荐
- python找出素数_python找素数
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 注意:对正整数n,如果用2到n的平方根之间的所有整数去除,均无法整除,则n为质数 ...
- 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】
素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...
- 素数:素数判断、找素数、计算素数和、素数求和
有关素数的基础算法 素数测试 package 素数;import java.util.ArrayList; import java.util.HashMap; import java.util.Map ...
- 如何找到与证明素数之一:小素数和概率素数的快速检验
如何找到与证明素数之一:小素数和概率素数的快速检验 引言 一.寻找十分小的素数 二.费马数,概率素数和伪素数 三.强概率素性检验 引言 在前一篇文章中,我们对如何寻找素数给出了三类方法,本文则详细讨论 ...
- python输出超级素数_超级素数(sprime)
超级素数(sprime) 题目描述 超级素数是指一个素数,每去掉后面一个数字,总能保证剩下的数为质数,例如: 373->37->3 这是一个长为3的超级素数. 输入 输入一个整数n (10 ...
- c语言判断2 1000素数,2是不是素数(C语言判断一个数为素数)
我听说西方不承认2是质数,而中国承认 到底是不是真的 2是质数.质数又称素数.一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数:否则称为合数.2是一个大于1的自然数,这一点满足质数 ...
- Java黑皮书课后题第6章:**6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数
6.29(双素数)双素数是指一对差值为2的素数.例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数.编写程序,找出小于1000的所有双素数 题目 题目描述 破题 代码 运行示例 ...
- Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...
- 财务报表包含哪些表?是季报还是月报?
财务报表包含哪些表? 财务报表包括资产负债表.损益表.现金流量表或财务状况变动表.附表和附注.财务报表是财务报告的主要部分,不包括董事报告.管理分析及财务情况说明书等列入财务报告或年度报告的资料. 财 ...
- 【javascript输入一个数判断这个数是否为素数】判断素数
判断素数 什么是素数:素数是指质数,一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数:否则称为合数.所以我们可以利用这个性质来判断这个数是否为素数. 基本代码: css部分: .b ...
最新文章
- 用技嘉Windows Image Tool给原版WIN7镜像注入USB3.0驱动
- MySQL如何跨机器迁移数据?
- MySQL运维常用系统命令
- wap打包 本地化 hbuilder_秋收接近尾声 冰城开启秸秆打包、秋整地
- 删除行对MySQL序列有这么多影响?
- 【ASP.NET】ASP.NET如何发布Web项目
- 基于vue-cli的快速开发框架
- myeclipse激活+Aptana安装配置
- Atitit 传媒学院专业与课程表艾提拉总结 目录 1. 媒体分为感觉媒体、表示媒体、表现媒体、存储媒体和传输媒体	1 1.1. 1、感觉媒体 如文字、数据、声音、图形、图像等。	1 1.2. 表示
- 计算机专业能当电子厂技术员,我在一个机械工厂从事电气技术员的工作,谁能告诉..._电气工程师_帮考网...
- Python xlsx转xls xls文件修复
- ios中获得UUID的方法,ios怎么获得uuid
- 2019.05 随笔
- 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest
- Problem K: 三角形数
- APP定制开发的优势
- B. Ternary Sequence
- 【量子力学】国际象棋与量子国际象棋Quantum Chess游戏规则
- [转贴]当杀毒软件无能为力时,手动杀毒也许是我的最后救命稻草!
- 给CheckBox换样式
热门文章
- Latex的使用(Ctex+TeXstudio)
- 简单聊一聊中国的房地产
- HadoopSpark
- UniAPP Android 蓝牙 ESCPOS打印机 打印图片和二维码
- 千克与磅之间的转换 Exercise05_05
- [git] your branch is ahead of ... 解决办法
- 郑州73中学计算机老师,2019年关于“郑州市中学信息技术优质课评比”的通知
- mysql关系运算选择投影连接,[转载]选择、投影和连接运算(关系数据库)
- 重磅!阿里又推免费商用字:阿里巴巴普惠体
- ActiveX控件的注册和反注册