小编Jan*_*aus的帖子

java.math.BigInteger pow(指数)问题

我对pow(指数)方法做了一些测试.不幸的是,我的数学技能不足以解决以下问题.

我正在使用此代码:

BigInteger.valueOf(2).pow(var);
Run Code Online (Sandbox Code Playgroud)

结果:

  • var | 时间以毫秒为单位
  • 2000000 | 11450
  • 2500000 | 12471
  • 3000000 | 22379
  • 3500000 | 32147
  • 4000000 | 46270
  • 4500000 | 31459
  • 5000000 | 49922

看到?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)

java biginteger exponent pow

6
推荐指数
1
解决办法
3323
查看次数

标签 统计

biginteger ×1

exponent ×1

java ×1

pow ×1