我对pow(指数)方法做了一些测试.不幸的是,我的数学技能不足以解决以下问题.
我正在使用此代码:
BigInteger.valueOf(2).pow(var);
Run Code Online (Sandbox Code Playgroud)
结果:
看到?2,500,000指数的计算速度几乎与2,000,000一样快.4,500,000的计算速度比4,000,000快得多.
这是为什么?
为了给你一些帮助,这里是BigInteger.pow(exponent)的原始实现:
public BigInteger pow(int exponent) {
if (exponent < 0)
throw new ArithmeticException("Negative exponent");
if (signum==0)
return (exponent==0 ? ONE : this);
// Perform exponentiation using repeated squaring trick
int newSign = (signum<0 && (exponent&1)==1 ? -1 : 1);
int[] baseToPow2 = this.mag;
int[] result = {1};
while (exponent != …Run Code Online (Sandbox Code Playgroud)