Почему при поиске остатка числа выдает неверный результат? - C#

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

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

Добрый вечер. Не могу понять в чем проблема. Нужно найти моду числа:
  double res2 = (Math.Pow(x, (n - 1) / 2));
                        Console.WriteLine("res2  = {0}", (res2 % n));
где х=3,n=121. В результате должно выводить 1,а выводит 93. В чем проблема?Спасибо

Решение задачи: «Почему при поиске остатка числа выдает неверный результат?»

textual
Листинг программы
int Modulo(int x, int n)
{
    int result = 1;
    int e = (n - 1) / 2;
 
    while (e > 0)
    {
        if (e % 2 == 1)
            result = (result * x) % n;
        e /= 2;
        x = (x * x) % n;
    }
    return result;
}

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


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

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

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