为什么Java BigInteger说'可能是素数'而不是'当然是素数'

  • 本文关键字:Java BigInteger java biginteger
  • 更新时间 :
  • 英文 :


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

BigInteger(int bitLength, int certainty, Random rnd)

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

为什么只有可能?为什么不能肯定?我还能相信结果会是一个素数吗?

来自BigInteger(int bitLength, int certainty, Random rnd):的文档

certainty:对调用方的不确定性的度量愿意容忍。新的BigInteger表示素数将超过(1-½确定性(。的执行时间这个构造函数与这个参数的值成比例。

因此构造函数允许您指定它将是素数的确定性,这就是为什么文档说"可能">

因为概率算法的运行速度比验证数字肯定是素数要快得多。

最新更新