Калькулятор возведения в степень по модулю

Эффективно вычисляйте большую целую степень по модулю другого целого числа быстрым методом возведения в квадрат и умножения.

Вычислить степень по модулю m
Введите целое основание, неотрицательный показатель и модуль больше единицы.

О возведении в степень по модулю

Возведение в степень по модулю вычисляет остаток от деления целого основания, возведённого в неотрицательную целую степень, на положительный модуль. Выражение a^b mod m задаёт единственный остаток от 0 до m - 1, сравнимый с a^b по этому модулю. Прямой расчёт быстро становится непрактичным: степени достигают огромных размеров, даже если итоговый остаток мал. Этот калькулятор не создаёт такое огромное промежуточное целое число. Эффективный метод называют бинарным возведением в степень, последовательным возведением в квадрат или методом квадратов и умножений. Показатель записывается в двоичной системе и обрабатывается по битам. Сначала основание сокращается по модулю m. На каждом шаге текущий множитель возводится в квадрат по модулю m. Если соответствующий бит показателя равен единице, этот множитель умножается на результат, который сразу снова сокращается по модулю m. Благодаря сокращению каждого промежуточного значения числа остаются меньше квадрата модуля. Число шагов этого алгоритма пропорционально лишь логарифму показателя. Поэтому степень с показателем один миллиард требует примерно тридцати этапов возведения в квадрат, а не миллиарда последовательных умножений. Показанный счётчик различает возведения в квадрат и выбранные умножения, соответствующие единичным битам показателя. При нулевом показателе корректно возвращается 1 mod m. Модульная арифметика считает эквивалентными числа с одинаковым остатком. Например, 17 и 5 сравнимы по модулю 12, поскольку оба дают остаток 5. Поддерживается и отрицательное основание: сначала оно приводится к эквивалентному неотрицательному остатку. Показатель в этом калькуляторе должен быть неотрицательным. Отрицательные показатели по модулю требуют нахождения обратного по умножению, который существует только при взаимной простоте основания и модуля. Степени по модулю лежат в основе теории чисел и современной криптографии. Шифрование и подписи RSA возводят сообщения в большие степени по модулю составного числа. Обмен ключами Диффи — Хеллмана и многие системы на основе дискретного логарифма используют степени по модулю простого числа. Эта же операция применяется в тестах простоты, генераторах псевдослучайных чисел, контрольных суммах, циклических закономерностях и задачах соревнований по программированию. Все три поля обрабатываются как точные целые числа произвольного размера, а не как числа с плавающей точкой. Поэтому значения за пределами обычного безопасного диапазона целых чисел JavaScript сохраняют каждую цифру. Модуль должен быть больше единицы; запятые и десятичные точки вводить нельзя. Для ручной проверки сначала сократите основание, затем проверьте небольшие показатели последовательным умножением, беря остаток после каждого шага.

Примеры возведения в степень по модулю

Примеры охватывают простую арифметическую проверку и типичные закономерности теории чисел.

ВыражениеРезультатПояснение
3^4 mod 51При делении 81 на 5 получается остаток 1
7^10 mod 134Небольшой пример в стиле криптографических вычислений
123^456 mod 789699Быстрое возведение в степень не создаёт полное значение степени
2^16 mod 171Пример малой теоремы Ферма

Как вычислить степень по модулю

  1. Введите целое основание: положительное, нулевое или отрицательное.
  2. Введите неотрицательный целый показатель.
  3. Введите целый модуль больше единицы.
  4. Нажмите «Рассчитать», чтобы получить точный остаток и число операций быстрого алгоритма.

Вопросы о возведении в степень по модулю

Почему не вычислить сначала полную степень?

Полная степень может содержать миллионы цифр и напрасно расходовать время и память. Сокращение после каждого умножения даёт тот же итоговый остаток, сохраняя разумный размер промежуточных чисел.

Что такое метод квадратов и умножений?

Он считывает двоичные цифры показателя и многократно возводит текущий остаток основания в квадрат. На результат умножаются только множители, соответствующие единичным битам.

Может ли основание быть отрицательным?

Да, калькулятор приводит отрицательное основание к эквивалентному неотрицательному остатку по модулю m. Итог всегда лежит между нулём и m - 1.

Что происходит при нулевом показателе?

Любое ненулевое основание в нулевой степени равно единице, а результат по модулю — 1 mod m. Калькулятор использует то же соглашение, когда основание и показатель одновременно равны нулю.

Поддерживаются ли целые числа криптографического размера?

Используется арифметика целых чисел произвольного размера, поэтому ввод не ограничен обычной точностью чисел с плавающей точкой. Очень большие показатели требуют больше работы, но бинарное возведение в степень сохраняет логарифмическое число этапов.