Быстрое возведение в степень по модулю - C#

Узнай цену своей работы

Формулировка задачи:

Столкнулся с проблемой, из-за которой не могу реализовать шифр. Это метод быстрого возведения в степень по модулю , он работает правильно на положительных числах.
         public Int64 FastPowFunc(Int64 Number, Int64 Pow, Int64 Mod) 
        {
            Int64 Result = 1;
            Int64 Bit = Number % Mod;
 
            while (Pow > 0)
            {
                if ((Pow & 1) == 1)
                {
                    Result *= Bit;
                    Result %= Mod;
                }
                Bit *= Bit;
                Bit %= Mod;
                Pow >>= 1;
            }
            return Result;
        }
И суть в том , что в онлайн калькуляторе -137 mod 22 = 17. (Я не понимаю как получается это число), а у меня берется не как -137, а как обычные 137 mod 22 и получается 5; Уже час сижу не могу понять. Заранее спасбио.

Решение задачи: «Быстрое возведение в степень по модулю»

textual
Листинг программы
BigInteger.ModPow(-137, 1, 22)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы