我需要反转BigInteger
.
假设我有BigInteger x;
我需要计算x.modPow(new BigInteger("-1"), p)
.
我收到以下错误:java.lang.ArithmeticException: BigInteger not invertible
.
使用BigInteger.modInverse()
-- 它会做你想做的事。
如果您阅读了文档BigInteger.modInverse()
(它执行相同的计算,但比您的代码更有效;事实上大概BigInteger.modPow()
calls modInverse()
对于负输入,然后再求幂),您会看到:
抛出: ArithmeticException - m
如果您得到“BigInteger 不可逆”,这意味着 x 和 p 不是相对质数,因此作为输入给出的数字 x 和 p 对没有数学上定义的逆。
可能性:
- p 是质数,x 是 0 或 p 的倍数
- p 不是质数,并且 x 和 p 有公因数
- p 不是正整数(0 或负数),这违反了以下要求
modPow()
and modInverse()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)