BigInteger.pow(BigInteger)?

新手上路,请多包涵

我正在玩 Java 中的数字,想看看我能得到多大的数字。据我了解,BigInteger 可以容纳无限大小的数字,只要我的计算机有足够的内存来容纳这样的数字,对吗?

我的问题是 BigInteger.pow 只接受一个 int,而不接受另一个 BigInteger,这意味着我只能使用最大为 2,147,483,647 的数字作为指数。是否可以这样使用 BigInteger 类?

 BigInteger.pow(BigInteger)

谢谢。

原文由 PeterW 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
1 个回答

您可以使用 重复平方 编写自己的代码:

 BigInteger pow(BigInteger base, BigInteger exponent) {
  BigInteger result = BigInteger.ONE;
  while (exponent.signum() > 0) {
    if (exponent.testBit(0)) result = result.multiply(base);
    base = base.multiply(base);
    exponent = exponent.shiftRight(1);
  }
  return result;
}

可能不适用于负底数或指数。

原文由 Keith Randall 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题