浏览 1525 次
锁定老帖子 主题:偶尔发现,但很实用,官方的求素数的方法
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-10
最后修改:2010-11-10
以前老是为求素数发愁,不管怎么做,效率总是不高. 今天为求一个数的阶乘而使用了BigInteger.本来想找一下BigInteger中输出科学计数格式的方法,没想到偶尔看到了:
public BigInteger nextProbablePrime () BigInteger
的可能为素数的第一个整数。此方法返回的数是合数的概率不超出
2-100
。此方法在执行以下搜索时将始终不会跳过素数:如果它返回 p
,则不存在 this < q <
p
的素数 q
。
BigInteger
的可能为素数的第一个整数。
ArithmeticException
-
this < 0
。
简直不敢相信,众里寻他千百度,蓦然回首那人却在灯火阑珊处.赶快测试一下,求100以内的素数:
public static void main(String[] args) { BigInteger bi = BigInteger.ZERO; while (true) { bi = bi.nextProbablePrime(); if (bi.intValue() > 100) { break; } System.out.print(bi + " "); } }
快速运行完毕: 输出: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 我等算法薄弱人士的福音啊. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-11-10
miller-rabin test
the DSA spec (NIST FIPS 186-2) http://www.cnblogs.com/feature/articles/1824667.html |
|
返回顶楼 | |
发表时间:2010-11-10
最后修改:2010-11-10
i2534 写道
以前老是为求素数发愁,不管怎么做,效率总是不高. 今天为求一个数的阶乘而使用了BigInteger.本来想找一下BigInteger中输出科学计数格式的方法,没想到偶尔看到了:
public BigInteger nextProbablePrime () BigInteger 的可能为素数的第一个整数。此方法返回的数是合数的概率不超出 2-100 。此方法在执行以下搜索时将始终不会跳过素数:如果它返回 p ,则不存在 this < q < p 的素数 q 。 BigInteger 的可能为素数的第一个整数。 ArithmeticException - this < 0 。 简直不敢相信,众里寻他千百度,蓦然回首那人却在灯火阑珊处.赶快测试一下,求100以内的素数:
public static void main(String[] args) { BigInteger bi = BigInteger.ZERO; while (true) { bi = bi.nextProbablePrime(); if (bi.intValue() > 100) { break; } System.out.print(bi + " "); } }
快速运行完毕: 输出: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 我等算法薄弱人士的福音啊.
|
|
返回顶楼 | |