EssayAI
Блог
Блог

Как решить систему сравнений: китайская теорема об остатках

Запрос

Дано: система из трёх сравнений x≡2(mod3)x \equiv 2 \pmod 3, x≡3(mod5)x \equiv 3 \pmod 5, x≡2(mod7)x \equiv 2 \pmod 7. Найти: наименьшее натуральное решение и общий вид всех решений.

Модули 3, 5 и 7 попарно взаимно просты, поэтому работает китайская теорема об остатках: решение существует при любых остатках и единственно по модулю произведения M=105M = 105. Ответ: x≡23(mod105)x \equiv 23 \pmod{105}, наименьшее натуральное решение равно 23. Калькулятор сверху собирает такое же решение для любых остатков и модулей и показывает на числовой оси, где ряды сравнений пересекаются.

Решение по шагам

Дано. Остатки r1=2r_1 = 2, r2=3r_2 = 3, r3=2r_3 = 2 по модулям m1=3m_1 = 3, m2=5m_2 = 5, m3=7m_3 = 7.

Найти. Все целые xx, дающие эти остатки одновременно.

Шаг 1. Проверяем взаимную простоту модулей. Условие теоремы: модули взаимно просты попарно, то есть у каждой пары НОД равен единице. Считаем все три пары: gcd⁡(3,5)=1\gcd(3, 5) = 1, gcd⁡(3,7)=1\gcd(3, 7) = 1, gcd⁡(5,7)=1\gcd(5, 7) = 1. Условие выполнено, значит решение заведомо существует, и остаётся его собрать. Если НОД пары считается не в уме, подойдёт лестница Евклида из задачи как найти НОД двух чисел.

Шаг 2. Считаем произведение модулей. Это модуль будущего ответа:

M=m1m2m3=3⋅5⋅7=105.M = m_1 m_2 m_3 = 3 \cdot 5 \cdot 7 = 105.

Шаг 3. Для каждого сравнения берём частное произведение. Частное произведение MiM_i получается вычёркиванием своего модуля: оно делится на все остальные модули и не делится только на свой.

M1=1053=35,M2=1055=21,M3=1057=15.M_1 = \frac{105}{3} = 35, \qquad M_2 = \frac{105}{5} = 21, \qquad M_3 = \frac{105}{7} = 15.

Шаг 4. Ищем обратные элементы. Для каждого ii нужен такой множитель yiy_i, что Miyi≡1(modmi)M_i y_i \equiv 1 \pmod{m_i}. Сначала приводим MiM_i по своему модулю, потом решаем маленькое сравнение. Здесь 35≡2(mod3)35 \equiv 2 \pmod 3, и сравнение 2y≡1(mod3)2y \equiv 1 \pmod 3 даёт y1=2y_1 = 2; далее 21≡1(mod5)21 \equiv 1 \pmod 5 и 15≡1(mod7)15 \equiv 1 \pmod 7, поэтому y2=y3=1y_2 = y_3 = 1. Для модулей побольше этот шаг делается расширенным алгоритмом Евклида, он разобран в задаче как найти обратное по модулю.

Все заготовки удобно свести в таблицу и дальше просто перемножать по строкам:

iimim_irir_iMiM_iMi mod miM_i \bmod m_iyiy_iriMiyir_i M_i y_i
1323522140
253211163
372151130

Шаг 5. Складываем слагаемые. Каждое слагаемое отвечает ровно за своё сравнение и не мешает остальным:

x0=140+63+30=233.x_0 = 140 + 63 + 30 = 233.

Шаг 6. Сокращаем сумму по модулю MM. Сумма 233 больше 105, поэтому её приводят к промежутку от 0 до 104: 233=2⋅105+23233 = 2 \cdot 105 + 23, остаток равен 23. Получаем x≡23(mod105)x \equiv 23 \pmod{105}, то есть x=23+105kx = 23 + 105k, а наименьшее натуральное решение равно 23.

Проверка. Подставляем 23 в каждое сравнение: 23=3⋅7+223 = 3 \cdot 7 + 2, остаток 2; 23=5⋅4+323 = 5 \cdot 4 + 3, остаток 3; 23=7⋅3+223 = 7 \cdot 3 + 2, остаток 2. Все три условия выполнены. Следующие решения получаются прибавлением периода: 128, 233, 338.

Формула и откуда она берётся

Общая запись китайской теоремы об остатках для попарно взаимно простых модулей выглядит так:

x≡∑i=1nriMiyi(modM),M=∏i=1nmi,Mi=Mmi,Miyi≡1(modmi).x \equiv \sum_{i=1}^{n} r_i M_i y_i \pmod{M}, \qquad M = \prod_{i=1}^{n} m_i, \qquad M_i = \frac{M}{m_i}, \qquad M_i y_i \equiv 1 \pmod{m_i}.

Смысл конструкции проще, чем запись. Слагаемое riMiyir_i M_i y_i работает как выключатель: по всем чужим модулям оно равно нулю, потому что MiM_i делится на каждый из них, а по своему модулю mim_i произведение MiyiM_i y_i равно единице, и остаётся ровно нужный остаток rir_i. Сумма таких слагаемых по модулю m1m_1 даёт r1r_1, по модулю m2m_2 даёт r2r_2 и так далее.

Обратный элемент yiy_i существует именно потому, что модули взаимно просты: MiM_i составлено из чужих модулей, каждый из которых не имеет с mim_i общих делителей, значит и gcd⁡(Mi,mi)=1\gcd(M_i, m_i) = 1. Это та же ситуация, что в обычном линейном сравнении с единичным НОД, разобранном в задаче как решить сравнение по модулю.

Единственность ответа по модулю MM доказывается в одну строку. Если два числа xx и x′x' дают одинаковые остатки по всем модулям, их разность делится на каждый mim_i, а для попарно взаимно простых модулей это значит, что разность делится на их произведение. Поэтому решений ровно один класс вычетов по модулю 105, а не три отдельных числа.

Второй способ: последовательная подстановка

Таблица с обратными элементами нужна не всегда. Систему можно решать по одному сравнению, подставляя общий вид решения в следующее. Начинаем с первого: x=2+3tx = 2 + 3t, где tt целое.

Подставляем во второе сравнение: 2+3t≡3(mod5)2 + 3t \equiv 3 \pmod 5, то есть 3t≡1(mod5)3t \equiv 1 \pmod 5. Обратный к тройке по модулю 5 равен двойке, поэтому t≡2(mod5)t \equiv 2 \pmod 5 и t=2+5st = 2 + 5s. Отсюда x=2+3(2+5s)=8+15sx = 2 + 3(2 + 5s) = 8 + 15s: два первых сравнения уже свёрнуты в одно по модулю 15.

Подставляем в третье: 8+15s≡2(mod7)8 + 15s \equiv 2 \pmod 7. По модулю семь 8≡18 \equiv 1 и 15≡115 \equiv 1, значит 1+s≡2(mod7)1 + s \equiv 2 \pmod 7, откуда s≡1(mod7)s \equiv 1 \pmod 7 и s=1+7us = 1 + 7u. Итог: x=8+15(1+7u)=23+105ux = 8 + 15(1 + 7u) = 23 + 105u, тот же ответ.

Какой способ выбрать, зависит от задачи. Формула КТО удобна, когда одна и та же система решается многократно с разными остатками: частные произведения и обратные элементы считаются один раз. Последовательная подстановка выгоднее при решении руками и при большом числе сравнений, потому что все промежуточные числа остаются маленькими.

Когда модули не взаимно просты

Условие попарной взаимной простоты в теореме не формальность, но и не приговор. Если у пары модулей есть общий делитель d=gcd⁡(mi,mj)d = \gcd(m_i, m_j), система разрешима тогда и только тогда, когда остатки согласованы по этому делителю: ri≡rj(modd)r_i \equiv r_j \pmod d. Проверять надо каждую пару.

Пример согласованной системы: x≡1(mod4)x \equiv 1 \pmod 4 и x≡3(mod6)x \equiv 3 \pmod 6. Здесь d=gcd⁡(4,6)=2d = \gcd(4, 6) = 2, оба остатка нечётны, то есть дают по модулю 2 одно и то же. Решение существует и равно x≡9(mod12)x \equiv 9 \pmod{12}, причём модуль ответа - это НОК модулей 12, а не их произведение 24.

Пример противоречивой системы: x≡1(mod4)x \equiv 1 \pmod 4 и x≡2(mod6)x \equiv 2 \pmod 6. Первое требует нечётного xx, второе чётного, согласования по двойке нет, решений не существует. В калькуляторе сверху такая система видна сразу: ряды на числовой оси не пересекаются ни в одной вертикали, а поле с ответом показывает прочерк.

Частые ошибки

  • Проверять взаимную простоту всех модулей сразу вместо попарной. У тройки 6, 10, 15 общий делитель равен единице, но попарно они не взаимно просты, и классическая формула КТО к ним неприменима.
  • Искать обратный элемент не по тому модулю. Нужен обратный к MiM_i по модулю mim_i, а не по модулю MM: по модулю 105 у числа 35 обратного вообще нет, ведь gcd⁡(35,105)=35\gcd(35, 105) = 35.
  • Забыть сократить сумму. Число 233 - верное решение, но не ответ: в ответе стоит наименьший неотрицательный вычет 23 либо общий вид 23+105k23 + 105k.
  • Перепутать остатки со своими частными произведениями. Каждое rir_i умножается только на своё MiM_i и своё yiy_i; сдвиг на строку в таблице даёт правдоподобное, но неверное число.
  • Написать ответ одним числом. Решение системы - это класс вычетов, и в нём бесконечно много чисел: 23, 128, 233 и так далее, а также отрицательные −82-82 и далее.
  • Считать произведение модулей периодом, когда модули не взаимно просты. Период всегда равен НОК модулей: для 4 и 6 это 12, а не 24.

FAQ

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

Что делать, если сравнений не три, а пять или больше? Алгоритм не меняется: произведение берётся по всем модулям, частные произведения получаются вычёркиванием своего модуля, слагаемых становится больше. Последовательная подстановка тоже масштабируется, просто шагов становится столько же, сколько сравнений.

Можно ли решить систему перебором? Да, и для маленьких модулей это законный способ: берём наибольший модуль, выписываем числа вида 2+7k2 + 7k и отбираем первое, подходящее остальным сравнениям. Перебор укладывается в M/mmax⁡M / m_{\max} проверок, то есть в 15 штук для нашей системы, но при модулях в сотни тысяч он уже бесполезен.

Где китайская теорема об остатках применяется на практике? Главное применение - ускорение вычислений по составному модулю: расчёт по m=pqm = pq разбивают на два расчёта по меньшим модулям и собирают обратно. Так устроена быстрая расшифровка в RSA, подробности - в задачах как сгенерировать ключи RSA и как быстро возвести в степень.

Коротко

  1. Проверь попарную взаимную простоту модулей: gcd⁡(3,5)=gcd⁡(3,7)=gcd⁡(5,7)=1\gcd(3, 5) = \gcd(3, 7) = \gcd(5, 7) = 1, условие теоремы выполнено.
  2. Посчитай произведение M=105M = 105 и частные произведения M1=35M_1 = 35, M2=21M_2 = 21, M3=15M_3 = 15.
  3. Найди обратные элементы по своим модулям: y1=2y_1 = 2, y2=1y_2 = 1, y3=1y_3 = 1.
  4. Сложи слагаемые riMiyir_i M_i y_i: 140+63+30=233140 + 63 + 30 = 233, и сократи сумму по модулю 105.
  5. Ответ: x≡23(mod105)x \equiv 23 \pmod{105}, наименьшее натуральное решение 23, общий вид x=23+105kx = 23 + 105k.
Задача в тетради или методичке? Сфотографируйте условие - сервис распознает его и решит по шагам с пояснениями.

Похожие задачи

Теория чисел/криптография

Как найти функцию Эйлера: разбор на числе 7560

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

Теория чисел/криптография

Как решить сравнение по модулю: 42x = 30 (mod 78)

Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.

Теория чисел/криптография

Как найти обратное по модулю: расширенный алгоритм Евклида

Как найти обратное по модулю: разбор на числах 37 и 120, условие существования через НОД, таблица расширенного алгоритма Евклида, приведение коэффициента и проверка остатка.

Теория чисел/криптография

Как найти первообразный корень: критерий и пример

Как найти первообразный корень по модулю: функция Эйлера, критерий через её простые делители, проверка кандидатов 2, 3, 5 и 6 по модулю 41 и таблица индексов.

Теория чисел/криптография

Как найти НОК двух чисел: два способа с примером

Как найти НОК двух чисел на примере 126 и 120: разложение на простые множители со старшими степенями, формула через НОД, проверка ответа и задача про шестерни с зубьями.

Теория чисел/криптография

Как найти НОД двух чисел: алгоритм Евклида

Как найти НОД двух чисел алгоритмом Евклида: деления с остатком по шагам на примере 1071 и 462, проверка ответа, НОК через НОД, расширенный алгоритм и коэффициенты Безу.