Tôi đang sử dụng lớp .NET BigInteger để thực hiện một số phép toán. Tuy nhiên phương pháp ModPow cho tôi kết quả sai. Tôi đã so sánh nó với Java mà tôi nghĩ là chính xác:C# BigInteger.ModPow lỗi?
// 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)
Đây có phải là lỗi trong lớp .NET hoặc tôi đang làm điều gì sai?
Tên gây hiểu nhầm; nó không phải là nhà điều hành mô-đun ở nơi đầu tiên. Đó là toán tử còn lại. Xem http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx –