Java如何反转BigInteger?

user1019710:

我需要反转一个BigInteger

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

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

杰森S:

使用 BigInteger.modInverse() -它会做您想要的。

如果您阅读docs BigInteger.modInverse()(其执行相同的计算,但比代码更有效;实际上大概是在求幂之前BigInteger.modPow()需要modInverse()负输入),则您会看到:

抛出:ArithmeticException-m <= 0,或者此BigInteger不具有乘法逆模m(即,该BigInteger相对于m而言不是素数)。

如果您获得“ BigInteger不可逆”的信息,则意味着x和p不是相对质数,因此对于数学上定义为输入的x和p对没有逆。

可能性:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章