Сравнение по модулю
Сравнение по модулю (также известное как конгруэнтность) — это отношение эквивалентности на множестве целых чисел, устанавливающее, что два числа дают одинаковые остатки при делении на заданное натуральное число, называемое модулем. Понятие является фундаментальным в теории чисел, алгебре и криптографии, а также широко применяется в информатике, дискретной математике и повседневной жизни (например, в календарях, часах и системах контроля чётности).
Определение и обозначения
Пусть \( m \) — натуральное число, большее единицы. Два целых числа \( a \) и \( b \) называются сравнимыми по модулю \( m \), если разность \( a - b \) делится на \( m \) без остатка. Формально это записывается как:
\[ a \equiv b \pmod{m} \]
Это означает, что существует такое целое число \( k \), что \( a = b + k \cdot m \). Эквивалентное определение: \( a \) и \( b \) дают одинаковые остатки при делении на \( m \). Например, \( 17 \equiv 5 \pmod{12} \), так как \( 17 - 5 = 12 \), что делится на 12, и оба числа дают остаток 5 при делении на 12.
В математической литературе также используются обозначения \( a \equiv b \ (\text{mod} \ m) \) или \( a \equiv b \ (m) \). Модуль \( m \) может быть любым натуральным числом, включая единицу (в этом случае все целые числа сравнимы друг с другом, так как разность всегда делится на 1).
Основные свойства
Отношение сравнения по модулю является отношением эквивалентности, то есть оно удовлетворяет трём аксиомам:
- Рефлексивность: \( a \equiv a \pmod{m} \) для любого \( a \).
- Симметричность: если \( a \equiv b \pmod{m} \), то \( b \equiv a \pmod{m} \).
- Транзитивность: если \( a \equiv b \pmod{m} \) и \( b \equiv c \pmod{m} \), то \( a \equiv c \pmod{m} \).
Кроме того, сравнения обладают свойствами, аналогичными свойствам равенств:
- Сложение и вычитание: если \( a \equiv b \pmod{m} \) и \( c \equiv d \pmod{m} \), то \( a \pm c \equiv b \pm d \pmod{m} \).
- Умножение: если \( a \equiv b \pmod{m} \) и \( c \equiv d \pmod{m} \), то \( a \cdot c \equiv b \cdot d \pmod{m} \).
- Возведение в степень: если \( a \equiv b \pmod{m} \), то \( a^n \equiv b^n \pmod{m} \) для любого натурального \( n \).
Однако деление в сравнениях не всегда возможно: если \( a \cdot c \equiv b \cdot c \pmod{m} \), то из этого не следует \( a \equiv b \pmod{m} \), если \( c \) и \( m \) не взаимно просты. В общем случае, если \( \gcd(c, m) = d \), то \( a \equiv b \pmod{m/d} \).
Классы вычетов и кольцо вычетов
Отношение сравнения разбивает множество целых чисел \( \mathbb{Z} \) на непересекающиеся классы эквивалентности, называемые классами вычетов по модулю \( m \). Каждый класс содержит все числа, дающие одинаковый остаток при делении на \( m \). Всего существует ровно \( m \) различных классов вычетов: \( 0, 1, 2, \dots, m-1 \). Множество этих классов обозначается \( \mathbb{Z}_m \) или \( \mathbb{Z}/m\mathbb{Z} \) и образует кольцо вычетов по модулю \( m \).
В кольце \( \mathbb{Z}_m \) определены операции сложения и умножения, которые являются корректными (не зависят от выбора представителей класса). Например, по модулю 5: \( 3 + 4 \equiv 2 \pmod{5} \), так как \( 3 + 4 = 7 \), а \( 7 \mod 5 = 2 \). Если модуль \( m \) является простым числом, то кольцо \( \mathbb{Z}_m \) превращается в поле, где для каждого ненулевого элемента существует обратный по умножению.
История
Понятие сравнения по модулю в явном виде ввёл немецкий математик Карл Фридрих Гаусс в своём труде «Арифметические исследования» (лат. Disquisitiones Arithmeticae), опубликованном в 1801 году. Гаусс систематизировал и развил идеи, восходящие к древнегреческим и китайским математикам. В частности, китайская теорема об остатках, известная ещё в III веке н. э. (в трактате Сунь Цзы «Сунь Цзы суань цзин»), описывает систему сравнений с попарно взаимно простыми модулями. Гаусс ввёл современное обозначение \( \equiv \) и доказал многие фундаментальные свойства, включая квадратичный закон взаимности.
Применение
Криптография
Сравнения по модулю лежат в основе многих криптографических алгоритмов. Например, RSA (Rivest–Shamir–Adleman) использует модульную арифметику для шифрования и дешифрования: сообщение \( M \) преобразуется в шифротекст \( C \) по формуле \( C \equiv M^e \pmod{n} \), где \( n \) — произведение двух больших простых чисел, а \( e \) — открытая экспонента. Обратное преобразование выполняется с помощью секретного ключа \( d \): \( M \equiv C^d \pmod{n} \). Безопасность RSA основана на сложности разложения \( n \) на множители.
Информатика и программирование
В языках программирования операция взятия остатка от деления (обычно обозначаемая % или mod) реализует сравнение по модулю. Она используется для циклического перебора (например, в хеш-таблицах), проверки чётности чисел, генерации псевдослучайных чисел (линейный конгруэнтный метод) и в алгоритмах контрольных сумм (например, CRC).
Календари и время
Системы счисления времени, такие как 12-часовой или 24-часовой циферблат, основаны на сравнении по модулю 12 или 24. Например, 23:00 и 11:00 вечера — это одно и то же время по модулю 12, так как \( 23 \equiv 11 \pmod{12} \). Аналогично, дни недели повторяются по модулю 7.
Теория чисел
Сравнения по модулю используются для решения диофантовых уравнений, доказательства теорем (например, малой теоремы Ферма: \( a^p \equiv a \pmod{p} \) для простого \( p \)), а также в алгоритмах проверки простоты чисел (тест Миллера — Рабина).
Классификация по модулю
В зависимости от свойств модуля различают:
- Сравнения по простому модулю: модуль \( p \) — простое число. В этом случае кольцо вычетов является полем, что упрощает многие операции (например, деление возможно для всех ненулевых элементов).
- Сравнения по составному модулю: модуль \( m \) — составное число. Здесь кольцо вычетов содержит делители нуля, что накладывает ограничения на деление.
- Сравнения по модулю степени простого числа: модуль \( p^k \), где \( p \) — простое. Такие модули важны в теории p-адических чисел и в криптографии (например, в схеме Пайе).
Интересные факты
- Китайская теорема об остатках утверждает, что система сравнений \( x \equiv a_i \pmod{m_i} \) с попарно взаимно простыми модулями имеет единственное решение по модулю \( M = m_1 \cdot m_2 \cdot \dots \cdot m_k \). Эта теорема используется в криптографии для ускорения вычислений (например, в алгоритме RSA с помощью китайской теоремы можно дешифровать сообщение быстрее).
- Тест Ферма на простоту основан на сравнении: если \( a^{n-1} \not\equiv 1 \pmod{n} \) для некоторого \( a \), то \( n \) — составное число. Однако существуют числа Кармайкла, которые проходят тест Ферма для всех \( a \), взаимно простых с \( n \), оставаясь составными.
- В русской математической школе термин «сравнение по модулю» часто используется в контексте теории чисел, в то время как в западной литературе более распространён термин «модульная арифметика».
Критика и ограничения
Основное ограничение модульной арифметики — невозможность деления без дополнительных условий. Если модуль не является простым, то не для каждого элемента существует обратный по умножению. Кроме того, операции сравнения не сохраняют порядок: из \( a \equiv b \pmod{m} \) не следует, что \( a > b \) или \( a < b \). В криптографии модульная арифметика уязвима для атак, основанных на квантовых вычислениях (например, алгоритм Шора позволяет эффективно разлагать числа на множители, что подрывает безопасность RSA).
Источники
- Гаусс К. Ф. «Арифметические исследования» (Disquisitiones Arithmeticae), 1801.
- Виноградов И. М. «Основы теории чисел», 1952.
- Кнут Д. Э. «Искусство программирования», том 2 (Получисленные алгоритмы), 1997.
- Шнайер Б. «Прикладная криптография», 1996.
- Сунь Цзы. «Сунь Цзы суань цзин» (III век н. э.) — описание китайской теоремы об остатках.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →