C # ModPow -1 проблемы

1

Я пытался это сделать:

BigInteger.ModPow(x, -1, z);

Но этот метод не может использовать -1 как аргумент Pow. Есть ли уже реализованный класс в С#, который может это сделать, или мне нужно создать собственный класс?

  • 1
    возможный дубликат функции C # ModInverse
  • 0
    Попробуйте BigInteger.ModPow(x,z-2,z); вместо.
Показать ещё 1 комментарий
Теги:
modulo
pow

1 ответ

4

Сохраняйте свою личность в школьной математике: x ^ -1 == 1/x. Так что это просто:

  BigInteger.DivRem(BigInteger.Divide(BigInteger.One, x), z, out remainder);
  • 0
    Это не работает! Мы хотели модульное обратное. Например, с 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 , после чего нет надежды, что мы сможем добиться успеха.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню