.NET BigIntegerクラスを使用して、いくつかの数学演算を実行しています。ただし、ModPowメソッドでは間違った結果が得られます。私はそれをJavaと比較しましたが、これは正しいと思います:
// C#
var a = new BigInteger(-1);
var b = new BigInteger(3);
var c = new BigInteger(5);
var x = BigInteger.ModPow(a, b, c); // (x = -1)
// Java
BigInteger a = new BigInteger("-1");
BigInteger b = new BigInteger("3");
BigInteger c = new BigInteger("5");
BigInteger x = a.modPow(b, c); // (x = 4)
.NET クラスのバグですか、それとも何か間違っていますか?