BigInteger的JavaDoc使我感到非常不安全,例如以下构造函数说:
BigInteger(int bitLength, int certainty, Random rnd)
构造一个随机生成的正BigInteger,它可能是 素,具有指定的bitLength。
为什么只有可能?为什么不肯定呢?我仍然可以相信结果将是质数吗?
答案 0 :(得分:4)
从docs到Class<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)
因为概率算法的运行速度比验证数字绝对是质数快得多。