Быстрое возведение в степень по модулю - 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)

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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