猿问

为什么 Java BigInteger 说“可能是素数”而不是“肯定是素数”?

BigInteger 的 JavaDoc 让我感觉很不安全,例如下面的构造函数说:

BigInteger(int bitLength, int certainty, Random rnd)

构造一个随机生成的正 BigInteger,它可能是素数,具有指定的 bitLength。

为什么只是可能?为什么不肯定?我还能相信结果是质数吗?


江户川乱折腾
浏览 194回答 2
2回答

拉风的咖菲猫

从文档中BigInteger(int bitLength, int certainty, Random rnd):certainty:衡量调用者愿意容忍的不确定性。新 BigInteger 表示素数的概率将超过 (1 - ½确定性)。此构造函数的执行时间与此参数的值成正比。因此,构造函数允许您指定它将是素数的确定性,这就是文档说“可能”的原因

FFIVE

因为概率算法的运行速度比验证数字肯定是素数要快得多。
随时随地看视频慕课网APP

相关分类

Java
我要回答