Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中生成160位素数?_Java_Primes - Fatal编程技术网

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

如何在java中生成160位素数?,java,primes,Java,Primes,我想用java生成一个160位的素数。我知道我必须循环遍历所有160位的数字,对于任何n,我必须检查它们是否可以被小于sqroot(n)的素数整除,或者被任何素性测试整除,比如Miller-Rabin测试。我的问题是: 有没有专门的图书馆可以这样做 还有其他(更好的)方法吗 生成一个几乎肯定是素数的BigInteger——它不是素数的概率小于被闪电击中的概率。一般来说,biginger已经内置了经过大量测试和优化的素性测试操作 值得一提的是,这不会永远持续下去的原因是,根据素数定理,随机选择的n

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

  • 有没有专门的图书馆可以这样做

  • 还有其他(更好的)方法吗

  • 生成一个几乎肯定是素数的
    BigInteger
    ——它不是素数的概率小于被闪电击中的概率。一般来说,
    biginger
    已经内置了经过大量测试和优化的素性测试操作


    值得一提的是,这不会永远持续下去的原因是,根据素数定理,随机选择的n位数的概率与素数的1/n成正比,因此平均而言,您只需尝试O(n)个不同的随机n位数,就可以找到一个素数。

    “我知道我必须循环所有160位数字,对于任何数字n”
    ——你有多少时间?160位素数包括2或5这样的素数吗?@DestinyCalling如果每秒可以循环10亿个数字,循环2^160个数字需要多少秒?提示:2^x/2^y=2^(x-y)每天不到2^18秒..很高兴你解决了这个问题。我想用我的电脑,做你描述的循环会超过1,然后是22零(7.440979924644339E22是我最新的计算)多年。我自己,我没有那么多时间。@HovercraftFullOfEels-Lolz。我也没有。但在我把我的问题发布到这里之前,我对这方面的知识不多。好吧……这比我的“生成320位RSA密钥并偷取素数”想法要好:-(我想知道Java生成的RSA密钥中的素数是否更有可能是素数。我猜他们可能会暗中使用这种方法。不过,在这种情况下,
    new Random()
    是推荐的PRNG吗?看起来,如果想要找到可能的素数(对于cryto?)最好有一个更好的源代码。这完全取决于您想要它做什么。@DuncanJones Java在大多数方面都是开源的。不要猜测,请查阅代码:)