gpt4 book ai didi

Java 如何反转 BigInteger?

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:48 26 4
gpt4 key购买 nike

我需要反转一个 BigInteger

假设我有 BigInteger x;,我需要计算 x.modPow(new BigInteger("-1"), p)

我收到以下错误:java.lang.ArithmeticException: BigInteger not invertible

最佳答案

使用 BigInteger.modInverse()——它会做你想做的事。

如果您阅读了 BigInteger.modInverse() 的文档(它执行相同的计算,但比您的代码更有效;事实上大概是 BigInteger.modPow()在提升到幂之前调用 modInverse() 负输入),你会看到:

Throws: ArithmeticException - m <= 0, or this BigInteger has no multiplicative inverse mod m (that is, this BigInteger is not relatively prime to m).

如果您得到“BigInteger not invertible”,这意味着 x 和 p 不是互质的,因此作为输入给出的一对数字 x 和 p 没有数学上定义的逆。

可能性:

  • p是素数,x是0或p的倍数
  • p不是质数,x和p有公因数
  • p 不是正整数(0 或负数),违反了modPow()modInverse()
  • 的要求

关于Java 如何反转 BigInteger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com