寻找质数算法

private static boolean isPrime(int num) {
int sqrt = (int) Math.pow(num, 0.5) + 1;
// 只要一条成立,则不是素数,因此使用i*6-1来定界
for (int i = 1; i * 6 - 1 <= sqrt; ++i) {
if (num % (i * 6 - 1) == 0 || num % (i * 6 + 1) == 0) {
return false;
}
}
return true;
}

原文地址:https://blog.51cto.com/9283734/2441001

时间: 2024-08-07 16:19:35

寻找质数算法的相关文章

RSA简介(三)——寻找质数

要生成RSA的密钥,第一步就是要寻找质数,本节专讲如何寻找质数. 我们的质数(又称素数).合数一般是对正整数来讲,质数就是只有1和本身两个的正整数,合数至少有3个约数,而1既不是合数也不是质数. 质数有无穷多个,这个早在古希腊时期就被证明了,使用反证法很容易证明:假设质数只有有限多,分别为a1.....an,则a1*a1....*an+1大于所有的质数,却不以任何质数为约数,推出矛盾,从而假设错误. 在质数的分布上,有个定理: lim ∏ (n)/(n/ln(n)) = 1 n→∞  其中∏ (

高效寻找质数——Sieve of Eratosthenes

Sieve of Eratosthenes-埃拉托斯特尼筛法,简称埃氏筛. 思路:给出要筛数值的范围n,找出以内的素数.先用2去筛,即把2留下,把2的倍数剔除掉:再用下一个素数,也就是3筛,把3留下,把3的倍数剔除掉:接下去用下一个素数5筛,把5留下,把5的倍数剔除掉:不断重复下去......,直到其小于等于. 示意图如下: 实例:LeetCode上寻找质数的一个问题(https://leetcode.com/problems/count-primes/). Question:Count the

简化求质数算法

前几天做了个求质数题,这两天浏览算法题库,偶然看到了原题以及程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则为素数. 这样一来不用除到自身了都,显然更简单,同时还要对之前的方法进行点小修改,将记录是否为质数的boolean变量都去掉,哈哈,是不是很激动的想知道答案??? 话不多说都在代码里: var min = 100; var max = 200; for(var i = min; i <= max ; i++) { for(var j = 2; j <=

质数算法

①需求:实现一个函数,对于给定的整型参数 N,该函数能够把自然数中,小于 N 的质数,从小到大打印出来.比如,当 N = 10,则打印出2 3 5 7 def is_prime(Num): i = 2 if Num <= 1: return False if Num == 2: return True while i*i <= Num: if Num % i == 0: return False else: i += 1 return True if __name__ == '__main__

求质数算法

1. 循环嵌套,外层循环是从1-1000的数字i(1排除,这你应该明白),内层是对数字i的素数判断. 2. 素数:除了1和它本身外没有别的因子.也可以理解为:除了1和它本身,其他数来除它余数都不是0. 3. 所以内层循环用从2开始到i的平方根(取整)依次求余,因为到了平方根以后,再增加除数,得到的商是小于平方根的,等于以前取过的除数.所以平方根以后不用再算了. 1 class Test { 2 3 public static Boolean isPrime(int n) { 4 for (int

求质数的各种算法

首先声明本人水平有限,仅仅做一下记录,有错的地方请指正,文章垃圾请包容!! 在网上不小心浏览到一篇技术博客,叫做<求质数算法的N种境界(N>10)>,写得很好,有兴趣的读者自己去搜索.然后就想自己去试试这篇博客里写得各种求质数的方法. 不想搭环境,就暂时用了PHP语言,在apache里运行,简易测试一下. 首先明确一下概念 质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中, 除了1和它本身以外不再有其他因数的数称为质数. 100以内质数表 2 3 5 7

算法系列2——RSA

1. RSA介绍 RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准.RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的

MR素性检测算法

转载地址: http://m.blog.csdn.net/blog/spirtsong/38273187 素数是除了自身和1以外,没有其它素数因子的自然数.自从欧几里得证明了有无穷个素数以后,人们就企图寻找一个可以构造所有素数的公式,寻找判定一个自然数是不是素数的方法.因为素数的地位非常重要. 鉴别一个自然数是素数还是合数,这个问题在中世纪就引起人们注意,当时人们试图寻找质数公式,到了高斯时代,基本上确认了简单的质数公式是不存在的,因此,高斯认为对素性判定是一个相当困难的问题.从此以后,这个问题

我的算法练习

绪论:算法在计算机中基本上是通用的,只不过不同的语言表现的方式有差别. 1.集合类型数据用特定字符拼接为一个字符串 var str:String = ""; var arr:Array = [1,2,3,5,3,2]; var sep:String = ";"; for(var i:int = 0;i < arr.length; i++) { var n:int = arr[i]; if(i < arr.length - 1)//前arr.length