Калькулятор модульной арифметики

Сложение, вычитание, умножение и возведение в степень по модулю. Обратный элемент, китайская теорема об остатках, тест простоты Миллера-Рабина. Поддержка произвольно больших чисел через BigInt.

Загрузка калькулятора...
6
Операций
Полный набор инструментов
BigInt
Поддержка
Произвольная точность
a⁻¹
Обратный элемент
Расширенный Евклид
φ(n)
Теорема Ферма
Эйлер и Ферма

Теория и определения

%

Что такое модульная арифметика?

Модульная арифметика — система вычислений, в которой числа «оборачиваются» после достижения определённого значения (модуля). Аналогия: часы работают по модулю 12 — после 12 счёт начинается заново.

a mod m = r, где 0 ≤ r < m

Сравнения по модулю

Два числа a и b сравнимы по модулю m (пишется a ≡ b (mod m)), если их разность делится на m. Это отношение эквивалентности, разбивающее все целые числа на m классов вычетов.

a ≡ b (mod m) ⇔ m | (a - b)

Применения

Модульная арифметика — фундамент криптографии (RSA, Диффи-Хеллман), хеш-функций, контрольных сумм (ISBN, банковские карты), коррекции ошибок, генерации псевдослучайных чисел и теории кодирования.

RSA, хеширование, CRC, Luhn, ECC

Где это используется?

Модульная арифметика выходит далеко за пределы учебников — она лежит в основе технологий, которыми мы пользуемся каждый день.

🔐

Криптография RSA

Шифрование с открытым ключом основано на возведении в степень по модулю произведения двух больших простых чисел. Безопасность RSA опирается на сложность факторизации.

#️⃣

Хеш-функции

Хеширование данных использует операции mod для отображения входа произвольного размера в фиксированный диапазон. Применяется в хеш-таблицах, проверке целостности, blockchain.

Контрольные цифры

Алгоритм Луна (банковские карты), ISBN, ИНН, штрих-коды, СНИЛС &mdash; все проверяют корректность с помощью остатка от деления.

🔄

Циклические структуры

Кольцевые буферы, round-robin планировщики, карусели в UI, дни недели &mdash; любая циклическая структура работает через mod.

📅

Расписания и календари

Определение дня недели, расчёт високосных годов, периодические задачи (cron), расписание смен &mdash; всё это модульная арифметика в быту.

🔢

Теория чисел

Малая теорема Ферма, теорема Эйлера, квадратичные вычеты, символ Лежандра, дискретный логарифм &mdash; фундамент математики и криптоанализа.

Формулы и алгоритмы

Математический аппарат, реализованный в калькуляторе.

Операции по модулю

(a + b) mod m = ((a mod m) + (b mod m)) mod m
(a - b) mod m = ((a mod m) - (b mod m) + m) mod m
(a × b) mod m = ((a mod m) × (b mod m)) mod m

Малая теорема Ферма

Если p простое и gcd(a,p) = 1:
a^(p-1) ≡ 1 (mod p)
Следовательно: a^(-1) ≡ a^(p-2) (mod p)

Теорема Эйлера

Если gcd(a, m) = 1:
a^φ(m) ≡ 1 (mod m)
φ(m) — функция Эйлера (количество чисел < m, взаимно простых с m)

Расширенный алгоритм Евклида

Находит x, y такие что:
ax + by = gcd(a, b)
Используется для нахождения обратного элемента
modular_exponentiation.py
def mod_pow(base, exp, mod):
    """
    Быстрое возведение в степень по модулю.
    Сложность: O(log exp)
    """
    result = 1
    base = base % mod
    while exp > 0:
        if exp % 2 == 1:
            result = (result * base) % mod
        exp = exp >> 1     # exp //= 2
        base = (base * base) % mod
    return result

def mod_inverse(a, m):
    """
    Обратный элемент через расширенный
    алгоритм Евклида.
    """
    g, x, _ = extended_gcd(a, m)
    if g != 1:
        raise ValueError("Обратного не существует")
    return x % m

Продвинутые темы

RАлгоритм RSA

RSA — асимметричная криптосистема, безопасность которой основана на сложности факторизации больших чисел.

  1. Выбрать два больших простых числа p и q
  2. Вычислить n = p × q и φ(n) = (p-1)(q-1)
  3. Выбрать e взаимно простое с φ(n)
  4. Найти d = e^(-1) mod φ(n)
  5. Шифрование: c = m^e mod n
  6. Дешифрование: m = c^d mod n

Ключи RSA

Открытый: (e, n)

Закрытый: (d, n)

e × d ≡ 1 (mod φ(n))

Китайская теорема об остатках (КТО)

Если m_1, m_2, ..., m_k попарно взаимно просты, то система сравнений:

x ≡ a_1 (mod m_1)
x ≡ a_2 (mod m_2)
...
x ≡ a_k (mod m_k)

имеет единственное решение по модулю M = m_1 × m_2 × ... × m_k.

Применения КТО:

  • Ускорение RSA-дешифрования (в 4 раза быстрее)
  • Секретное разделение (схема Шамира)
  • Вычисления с большими числами через малые модули
  • Параллельные вычисления в компьютерной алгебре

φТеорема Эйлера

Обобщение малой теоремы Ферма: для любого a, взаимно простого с m, выполняется a^φ(m) ≡ 1 (mod m). Функция Эйлера φ(n) считает количество чисел от 1 до n, взаимно простых с n.

φ(p^k) = p^k - p^(k-1)

logДискретный логарифм

Задача нахождения x из уравнения a^x ≡ b (mod p). Считается вычислительно трудной и лежит в основе протоколов Диффи-Хеллмана, ElGamal и эллиптической криптографии (ECDSA).

DLP: g^x ≡ h (mod p), найти x

Практические советы

01

Приводите к модулю заранее

При умножении больших чисел берите остаток на каждом шаге. Это предотвращает переполнение и ускоряет вычисления: (a * b) mod m = ((a mod m) * (b mod m)) mod m.

02

Используйте быстрое возведение в степень

Наивный подход a^b имеет сложность O(b), бинарное возведение в степень (binary exponentiation) &mdash; O(log b). Разница колоссальна для криптографических размеров.

03

Проверяйте взаимную простоту

Обратный элемент a^(-1) mod m существует тогда и только тогда, когда gcd(a, m) = 1. Всегда проверяйте это условие перед вычислением.

04

Отрицательные остатки

В программировании оператор % может давать отрицательный результат. Для корректного остатка используйте формулу: ((a % m) + m) % m.

05

BigInt для криптографии

RSA использует числа длиной 2048-4096 бит. Стандартные типы данных не справятся &mdash; используйте BigInt в JavaScript или GMP в C/C++.

06

Тест простоты для генерации ключей

Для RSA нужны большие простые числа. Тест Миллера-Рабина с 20+ раундами даёт вероятность ошибки менее 4^(-20) &asymp; 10^(-12).

Как пользоваться калькулятором

1

Выберите вкладку

Определите тип задачи: базовые операции, обратный элемент, возведение в степень, КТО, тест простоты или НОД/расширенный Евклид.

2

Введите числа

Укажите необходимые параметры. Поддерживаются произвольно большие целые числа благодаря BigInt. Для КТО добавьте нужное количество сравнений.

3

Нажмите "Вычислить"

Калькулятор мгновенно выполнит расчёт. Все вычисления происходят в вашем браузере &mdash; данные никуда не отправляются.

4

Изучите решение

Помимо ответа, калькулятор показывает пошаговое решение: каждый шаг алгоритма Евклида, каждую итерацию быстрого возведения в степень, проверку результата.

ЧАСТЫЕ ВОПРОСЫ

Часто задаваемые вопросы

Это арифметика с «оборачиванием». Представьте часы: после 12 идёт снова 1. Точно так же в модульной арифметике после достижения модуля m числа начинают считаться заново. Например, 15 mod 12 = 3 (15 часов = 3 часа дня).
Обратный элемент — это аналог деления в модульной арифметике. Поскольку обычное деление не определено для остатков, вместо a/b mod m мы вычисляем a * b^(-1) mod m. Это критически важно для RSA-дешифрования и решения линейных сравнений.
Обратный элемент a^(-1) mod m существует тогда и только тогда, когда gcd(a, m) = 1, то есть числа взаимно просты. Например, 4^(-1) mod 6 не существует, потому что gcd(4, 6) = 2 ≠ 1.
КТО утверждает, что система сравнений x ≡ a_i (mod m_i) с попарно взаимно простыми модулями имеет единственное решение по модулю M = m_1 × m_2 × ... × m_k. Это позволяет разбивать вычисления с большими числами на параллельные вычисления с малыми модулями.
Вероятностный тест Миллера-Рабина с k раундами даёт вероятность ошибки не более 4^(-k). При 20 раундах вероятность ложного срабатывания менее 10^(-12). Для чисел до ~82 бит калькулятор использует детерминистический вариант с гарантированно верным результатом.
Да. Калькулятор использует JavaScript BigInt, что позволяет работать с целыми числами произвольной длины без потери точности. Вы можете вводить числа длиной в сотни цифр. Все вычисления выполняются в вашем браузере.
Вместо b умножений (наивный подход), алгоритм бинарного возведения выполняет всего log₂(b) умножений. Для b = 10^18 это разница между 10^18 операций (невозможно) и ~60 операций (мгновенно).
Проверка банковских карт (алгоритм Луна), контрольные суммы ISBN, штрих-кодов и паспортов, шифрование HTTPS (RSA, Диффи-Хеллман), блокчейн, хеш-таблицы в базах данных, расчёт дней недели, генераторы случайных чисел.
Обычный алгоритм Евклида находит только НОД(a, b). Расширенный дополнительно находит коэффициенты Безу x и y такие, что ax + by = gcd(a, b). Именно это позволяет вычислить обратный элемент по модулю.
Все вычисления выполняются исключительно в вашем браузере (client-side). Никакие данные не отправляются на сервер. Это означает полную конфиденциальность ваших расчётов. Однако для реальных криптографических задач рекомендуется использовать специализированные библиотеки с защитой от атак по побочным каналам.
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

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

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

СМЕЖНЫЕ ИНСТРУМЕНТЫ

Похожие калькуляторы

15

Калькулятор чисел Фибоначчи

Вычислите n-е число Фибоначчи, проверьте принадлежность числа ряду, найдите золотое сечение. Формула Бине.

/fibonacci-calculator

Калькулятор тригонометрии

Вычисление sin, cos, tan, cot, sec, csc. Решение треугольников, радианы/градусы, тригонометрические уравнения.

/trigonometry-calculator

Калькулятор оптимизации: симплекс, рюкзак, генетика

Решение задач оптимизации: линейное программирование (симплекс-метод), задача о рюкзаке и генетические алгоритмы. Поиск минимума/максимума.

/optimization-calculator

Калькулятор дробей (смешанные и неправильные)

Конвертер дробей онлайн. Перевод смешанных чисел в неправильные дроби и наоборот с подробным решением.

/fraction-calculator

Калькулятор НОД и НОК

Быстрый расчет НОД и НОК для любых чисел. Разложение на простые множители (факторизация) онлайн.

/gcd-lcm-calculator

Калькулятор матриц

Вычисление определителя, обратной матрицы, ранга и собственных значений. Удобный интерфейс с решением.

/matrix-calculator

Калькулятор комбинаторики

Перестановки P(n), сочетания C(n,k), размещения A(n,k) и вариации с повторениями. Факториал, биномиальные коэффициенты.

/combinatorics-calculator

Калькулятор комплексных чисел

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

/complex-number-calculator

Калькулятор производных и интегралов

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

/derivative-integral-calculator

Калькулятор золотого сечения

Пропорции золотого сечения (phi = 1.618). Для дизайна, архитектуры, фотографии. Прямоугольник и спираль.

/golden-ratio-calculator

Калькулятор сумм рядов

Арифметическая и геометрическая прогрессии, степенные ряды, ряды Тейлора. N-й член, сходимость.

/series-sum-calculator

Калькулятор Монте-Карло симуляции: оценка рисков

Прогнозирование стоимости активов и оценка рисков методом Монте-Карло. Расчет распределения вероятностей, VaR и волатильности.

/monte-carlo-simulation

Калькулятор процентов

Посчитать проценты от числа, прибавить или вычесть процент, найти разницу. Удобный онлайн калькулятор с формулами.

/percentage-calculator

Калькулятор научной нотации

Конвертер чисел в научную (экспоненциальную) и инженерную нотацию. Перевод стандартного вида числа онлайн.

/scientific-notation-calculator

Калькулятор интерполяции (Лагранж, сплайн)

Интерполяция функции онлайн: линейная, полином Лагранжа, кубический сплайн. Построение графика по точкам.

/interpolation-calculator