Я пытался это сделать:
BigInteger.ModPow(x, -1, z);
Но этот метод не может использовать -1 как аргумент Pow. Есть ли уже реализованный класс в С#, который может это сделать, или мне нужно создать собственный класс?
Сохраняйте свою личность в школьной математике: x ^ -1 == 1/x. Так что это просто:
BigInteger.DivRem(BigInteger.Divide(BigInteger.One, x), z, out remainder);
BigInteger.ModPow(value: 7, exponent: -1, modulus: 60)
мы хотели бы получить результат 43, потому что 7 ^ (- 1) или 1/7 - это 43 по модулю 60. Это потому, что 7 * 43 дает 1 по модулю 60. Ваш ответ всегда будет неудачным, если x
нетривиален, потому что BigInteger.Divide(1, x)
рассматривается как рациональное число (от 0 до 1), которое будет усечено до нуля. Таким образом, вы начинаете с отбрасывания всей информации о x
, после чего нет надежды, что мы сможем добиться успеха.
BigInteger.ModPow(x,z-2,z);
вместо.