Что такое калькулятор Power Mod?
Калькулятор Power Mod вычисляет (основаниестепень) mod m — остаток от деления степени основания на модуль. Эта операция, называемая модульным возведением в степень, встречается повсюду в теории чисел и криптографии: на ней держатся шифрование RSA, обмен ключами Диффи — Хеллмана, тесты на простоту и хеш-функции. Вычислить её «в лоб» (сначала возвести в гигантскую степень, а потом взять остаток) для больших показателей попросту невозможно, поэтому применяется быстрый алгоритм.
Как пользоваться калькулятором
Введите три целых числа: основание, показатель степени (ноль или положительное число) и модуль \(m\) (целое положительное число больше 1). Нажмите «Вычислить» — и инструмент вернёт результат в диапазоне от 0 до \(m-1\). Отрицательные основания автоматически приводятся к корректному неотрицательному остатку.
Разбор формулы
$$\text{result} = \text{Base}^{\text{Exponent}} \bmod \text{Modulus}$$
Вместо того чтобы строить огромное число основаниестепень, калькулятор использует метод «возведения в квадрат и умножения» (его ещё называют бинарным возведением в степень). Показатель читается в двоичном виде. Начиная с результата, равного 1, алгоритм многократно возводит основание в квадрат по модулю \(m\); всякий раз, когда очередной двоичный разряд показателя равен 1, это значение домножается на накопленный результат — снова с приведением по модулю \(m\). Поскольку все промежуточные числа остаются меньше \(m^2\), вычисление выполняется быстро даже для показателей в сотни знаков.
Пример вычисления
Вычислим \(7^{256} \bmod 13\). Порядок числа 7 по модулю 13 делит 12, причём \(7^{12} \equiv 1\). Так как \(256 = 12 \times 21 + 4\), получаем $$7^{256} \equiv 7^{4} = 2401 \equiv 9 \pmod{13}.$$ Значит, ответ — 9, и калькулятор находит его мгновенно, ни разу не формируя 217-значное число \(7^{256}\).
Частые вопросы
А если модуль равен 1? Любое целое число сравнимо с 0 по модулю 1, поэтому результат равен 0.
Может ли показатель быть нулём? Да. Любое основание в степени 0 равно 1, поэтому результат — \(1 \bmod m\) (то есть 1 при \(m > 1\)).
Почему нельзя просто вычислить степень напрямую? Для больших показателей промежуточное число содержало бы астрономическое количество цифр и вызвало бы переполнение. Приведение по модулю на каждом шаге удерживает значения небольшими и делает метод эффективным.