如何在java中生成160位素数?

时间:2013-02-24 20:18:53

标签: java primes

我想在java中生成一个160位的素数。我知道我必须循环遍历所有160位数字和任何数字n,我必须检查它们是否可被任何小于sqroot(n)的素数或任何素数整除像Miller-Rabin test一样测试。我的问题是:

  1. 是否有任何特定的库可以执行此操作?

  2. 还有其他(更好)的方法吗?

1 个答案:

答案 0 :(得分:15)

BigInteger.probablePrime(160, new Random())生成的BigInteger几乎肯定是素数 - 它素数的概率小于你被闪电击中的概率。通常,BigInteger已经经过严格测试和优化的内置素性测试操作。

对于它的价值,这不会永远的原因是,通过素数定理,随机选择的n位数具有与素数的1 / n成比例的概率,因此平均而言,您只需要尝试O(n)不同的随机n位数,然后才能找到一个素数。