Как решить систему сравнений: китайская теорема об остатках
Дано: система из трёх сравнений , , . Найти: наименьшее натуральное решение и общий вид всех решений.
Модули 3, 5 и 7 попарно взаимно просты, поэтому работает китайская теорема об остатках: решение существует при любых остатках и единственно по модулю произведения . Ответ: , наименьшее натуральное решение равно 23. Калькулятор сверху собирает такое же решение для любых остатков и модулей и показывает на числовой оси, где ряды сравнений пересекаются.
Решение по шагам
Дано. Остатки , , по модулям , , .
Найти. Все целые , дающие эти остатки одновременно.
Шаг 1. Проверяем взаимную простоту модулей. Условие теоремы: модули взаимно просты попарно, то есть у каждой пары НОД равен единице. Считаем все три пары: , , . Условие выполнено, значит решение заведомо существует, и остаётся его собрать. Если НОД пары считается не в уме, подойдёт лестница Евклида из задачи как найти НОД двух чисел.
Шаг 2. Считаем произведение модулей. Это модуль будущего ответа:
Шаг 3. Для каждого сравнения берём частное произведение. Частное произведение получается вычёркиванием своего модуля: оно делится на все остальные модули и не делится только на свой.
Шаг 4. Ищем обратные элементы. Для каждого нужен такой множитель , что . Сначала приводим по своему модулю, потом решаем маленькое сравнение. Здесь , и сравнение даёт ; далее и , поэтому . Для модулей побольше этот шаг делается расширенным алгоритмом Евклида, он разобран в задаче как найти обратное по модулю.
Все заготовки удобно свести в таблицу и дальше просто перемножать по строкам:
| 1 | 3 | 2 | 35 | 2 | 2 | 140 |
| 2 | 5 | 3 | 21 | 1 | 1 | 63 |
| 3 | 7 | 2 | 15 | 1 | 1 | 30 |
Шаг 5. Складываем слагаемые. Каждое слагаемое отвечает ровно за своё сравнение и не мешает остальным:
Шаг 6. Сокращаем сумму по модулю . Сумма 233 больше 105, поэтому её приводят к промежутку от 0 до 104: , остаток равен 23. Получаем , то есть , а наименьшее натуральное решение равно 23.
Проверка. Подставляем 23 в каждое сравнение: , остаток 2; , остаток 3; , остаток 2. Все три условия выполнены. Следующие решения получаются прибавлением периода: 128, 233, 338.
Формула и откуда она берётся
Общая запись китайской теоремы об остатках для попарно взаимно простых модулей выглядит так:
Смысл конструкции проще, чем запись. Слагаемое работает как выключатель: по всем чужим модулям оно равно нулю, потому что делится на каждый из них, а по своему модулю произведение равно единице, и остаётся ровно нужный остаток . Сумма таких слагаемых по модулю даёт , по модулю даёт и так далее.
Обратный элемент существует именно потому, что модули взаимно просты: составлено из чужих модулей, каждый из которых не имеет с общих делителей, значит и . Это та же ситуация, что в обычном линейном сравнении с единичным НОД, разобранном в задаче как решить сравнение по модулю.
Единственность ответа по модулю доказывается в одну строку. Если два числа и дают одинаковые остатки по всем модулям, их разность делится на каждый , а для попарно взаимно простых модулей это значит, что разность делится на их произведение. Поэтому решений ровно один класс вычетов по модулю 105, а не три отдельных числа.
Второй способ: последовательная подстановка
Таблица с обратными элементами нужна не всегда. Систему можно решать по одному сравнению, подставляя общий вид решения в следующее. Начинаем с первого: , где целое.
Подставляем во второе сравнение: , то есть . Обратный к тройке по модулю 5 равен двойке, поэтому и . Отсюда : два первых сравнения уже свёрнуты в одно по модулю 15.
Подставляем в третье: . По модулю семь и , значит , откуда и . Итог: , тот же ответ.
Какой способ выбрать, зависит от задачи. Формула КТО удобна, когда одна и та же система решается многократно с разными остатками: частные произведения и обратные элементы считаются один раз. Последовательная подстановка выгоднее при решении руками и при большом числе сравнений, потому что все промежуточные числа остаются маленькими.
Когда модули не взаимно просты
Условие попарной взаимной простоты в теореме не формальность, но и не приговор. Если у пары модулей есть общий делитель , система разрешима тогда и только тогда, когда остатки согласованы по этому делителю: . Проверять надо каждую пару.
Пример согласованной системы: и . Здесь , оба остатка нечётны, то есть дают по модулю 2 одно и то же. Решение существует и равно , причём модуль ответа - это НОК модулей 12, а не их произведение 24.
Пример противоречивой системы: и . Первое требует нечётного , второе чётного, согласования по двойке нет, решений не существует. В калькуляторе сверху такая система видна сразу: ряды на числовой оси не пересекаются ни в одной вертикали, а поле с ответом показывает прочерк.
Частые ошибки
- Проверять взаимную простоту всех модулей сразу вместо попарной. У тройки 6, 10, 15 общий делитель равен единице, но попарно они не взаимно просты, и классическая формула КТО к ним неприменима.
- Искать обратный элемент не по тому модулю. Нужен обратный к по модулю , а не по модулю : по модулю 105 у числа 35 обратного вообще нет, ведь .
- Забыть сократить сумму. Число 233 - верное решение, но не ответ: в ответе стоит наименьший неотрицательный вычет 23 либо общий вид .
- Перепутать остатки со своими частными произведениями. Каждое умножается только на своё и своё ; сдвиг на строку в таблице даёт правдоподобное, но неверное число.
- Написать ответ одним числом. Решение системы - это класс вычетов, и в нём бесконечно много чисел: 23, 128, 233 и так далее, а также отрицательные и далее.
- Считать произведение модулей периодом, когда модули не взаимно просты. Период всегда равен НОК модулей: для 4 и 6 это 12, а не 24.
FAQ
Почему решение единственно по модулю произведения, а не по какому-то другому модулю? Разность двух решений делится на каждый модуль системы. Для попарно взаимно простых модулей отсюда следует делимость на произведение, поэтому все решения отличаются на кратное и образуют один класс вычетов.
Что делать, если сравнений не три, а пять или больше? Алгоритм не меняется: произведение берётся по всем модулям, частные произведения получаются вычёркиванием своего модуля, слагаемых становится больше. Последовательная подстановка тоже масштабируется, просто шагов становится столько же, сколько сравнений.
Можно ли решить систему перебором? Да, и для маленьких модулей это законный способ: берём наибольший модуль, выписываем числа вида и отбираем первое, подходящее остальным сравнениям. Перебор укладывается в проверок, то есть в 15 штук для нашей системы, но при модулях в сотни тысяч он уже бесполезен.
Где китайская теорема об остатках применяется на практике? Главное применение - ускорение вычислений по составному модулю: расчёт по разбивают на два расчёта по меньшим модулям и собирают обратно. Так устроена быстрая расшифровка в RSA, подробности - в задачах как сгенерировать ключи RSA и как быстро возвести в степень.
Коротко
- Проверь попарную взаимную простоту модулей: , условие теоремы выполнено.
- Посчитай произведение и частные произведения , , .
- Найди обратные элементы по своим модулям: , , .
- Сложи слагаемые : , и сократи сумму по модулю 105.
- Ответ: , наименьшее натуральное решение 23, общий вид .
Похожие задачи
Как найти функцию Эйлера: разбор на числе 7560
Как найти функцию Эйлера: разбор числа 7560 по шагам, каноническое разложение, формула через произведение скобок по простым делителям, проверка мультипликативностью и теорема Эйлера.
Теория чисел/криптографияКак решить сравнение по модулю: 42x = 30 (mod 78)
Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.
Теория чисел/криптографияКак найти обратное по модулю: расширенный алгоритм Евклида
Как найти обратное по модулю: разбор на числах 37 и 120, условие существования через НОД, таблица расширенного алгоритма Евклида, приведение коэффициента и проверка остатка.
Теория чисел/криптографияКак найти первообразный корень: критерий и пример
Как найти первообразный корень по модулю: функция Эйлера, критерий через её простые делители, проверка кандидатов 2, 3, 5 и 6 по модулю 41 и таблица индексов.
Теория чисел/криптографияКак найти НОК двух чисел: два способа с примером
Как найти НОК двух чисел на примере 126 и 120: разложение на простые множители со старшими степенями, формула через НОД, проверка ответа и задача про шестерни с зубьями.
Теория чисел/криптографияКак найти НОД двух чисел: алгоритм Евклида
Как найти НОД двух чисел алгоритмом Евклида: деления с остатком по шагам на примере 1071 и 462, проверка ответа, НОК через НОД, расширенный алгоритм и коэффициенты Безу.