质数判断
2013-01-10 22:03
162 查看
【问题】给定一个正整数n,如何判断其是否质数呢?
1、方法一:最基本的,将其除以[2, squt(n)],只要有一个数可以整除就不是质数;
2、方法二:根据素数唯一分解定理:任何一大于1的整数均可以分解为素数的乘积,若不考虑素数乘积的先后顺序,则分解式是唯一的。
由此可知,我们并不需要测试第一种方法里的所有数字,而只需要提取其中的质数,如果要是用这个方法就需要先生成[2, squt(n)]范围内的质数列表。
2.1、给定一个正整数x,列举其中的所有质数
针对此问题可以使用筛选法具体实现上看可以建立一个x大小的数组且全部初始化为真。忽略1,从2开始,判断发现2是质数,于是将所有2的倍数标志为假;轮到3,发现3是质数,于是标记所有3的倍数为假;忽略4;发现5是质数,于是标记所有5的倍数.....
通过此方法即可得到[2, x]区间内的所有质数列表,通过这张表可以判断[2, x^2]范围内的正整数是否是素数。
3、方法三:Rabin-Miller算法
这算法特么的看不懂,还有出错概率,有谁有兴趣的自己参考以下资料吧:
来自 @highyyy:http://blog.csdn.net/highyyy/article/details/6315559
来自 @Panda_Ming:http://blog.csdn.net/panda_ming/article/details/7227222
来自 @lxd:http://lxd6366.blog.163.com/blog/static/245542522010213115854564/
1、方法一:最基本的,将其除以[2, squt(n)],只要有一个数可以整除就不是质数;
2、方法二:根据素数唯一分解定理:任何一大于1的整数均可以分解为素数的乘积,若不考虑素数乘积的先后顺序,则分解式是唯一的。
由此可知,我们并不需要测试第一种方法里的所有数字,而只需要提取其中的质数,如果要是用这个方法就需要先生成[2, squt(n)]范围内的质数列表。
2.1、给定一个正整数x,列举其中的所有质数
针对此问题可以使用筛选法具体实现上看可以建立一个x大小的数组且全部初始化为真。忽略1,从2开始,判断发现2是质数,于是将所有2的倍数标志为假;轮到3,发现3是质数,于是标记所有3的倍数为假;忽略4;发现5是质数,于是标记所有5的倍数.....
通过此方法即可得到[2, x]区间内的所有质数列表,通过这张表可以判断[2, x^2]范围内的正整数是否是素数。
3、方法三:Rabin-Miller算法
这算法特么的看不懂,还有出错概率,有谁有兴趣的自己参考以下资料吧:
来自 @highyyy:http://blog.csdn.net/highyyy/article/details/6315559
来自 @Panda_Ming:http://blog.csdn.net/panda_ming/article/details/7227222
来自 @lxd:http://lxd6366.blog.163.com/blog/static/245542522010213115854564/
相关文章推荐
- Java趣题库:质数判断
- 1765. 笨小猴 质数的判断…注意0和1也不是质数呀
- java-判断素数(质数)
- 计蒜客|C++程序设计|判断质数
- 用函数做 :判断质数、与7相关的数、阶乘、一元二次方程
- 判断一个数是否是质数
- 第二周作业---判断一个正整数是否为质数的算法
- Easy Problem 9 判断质数
- C语言函数 判断质数
- 22、JAVA 判断一个数是不是质数[中兴笔试]
- 判断质数的优化算法,比较详细解释
- 我自己做了一个质数合数判断器,程序和源码都有,大家来给些建议吧
- C#两道小面试题:打印杨辉三角形,判断质数(素数)
- JavaScript判断数字是否为质数的方法汇总
- python中判断一个数字是否是质数
- 24.七-断言方法,判断质数
- 判断一个数字是否为质数
- 笔试面试3 将一个数分解成质因数的形式以及如何判断一个数是否是质数
- 计蒜客 第3题:判断质数
- 判断一个数是否是质数