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

时间:2018-11-10 20:29:51

标签: java biginteger

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

BigInteger(int bitLength, int certainty, Random rnd)
  

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

为什么只有可能?为什么不肯定呢?我仍然可以相信结果将是质数吗?

2 个答案:

答案 0 :(得分:4)

docsClass<Planet> cls = (Class<Planet>)Class.forName("<full PlanetImpl class name, inclusing package>"); Constructor<Planet> constructor = cls.getDeclaredConstructor(); constructor.setAccessible(true); Planet planet = constructor.newInstance(); planet.orbit();

  

BigInteger(int bitLength, int certainty, Random rnd):衡量呼叫者身份的不确定性            愿意宽容。新的BigInteger的概率            表示质数将超过            (1-½确定性)。执行时间            该构造函数与该参数的值成比例。

因此,构造函数让您指定将其定为素数的确定性,这就是为什么文档说“可能”的原因

答案 1 :(得分:4)

因为概率算法的运行速度比验证数字绝对是质数快得多。