logo
Конспект лекций ДМ

5.1.4 Китайская теорема об остатках

Любое неотрицательное целое число, не превосходящее произведения модулей, можно однозначно восстановить, если известны его вычеты по этим модулям. Этот результат был известен еще в древнем Китае и носит название китайской теоремы об остатках. Теорема была предложена китайским математиком первого века Сун Це. Китайская теорема об остатках является мощным криптографическим инструментом.

Она формулируется следующим образом.

Пусть m1, m2, … , m t – модули (целые числа, большие 1), которые являются попарно взаимно простыми, т.е. НОД (mi, mj,) = 1 при i  j.

Пусть а1, а2, … , а t – тоже целые числа, такие, что 0 ≤ а i ≤ m i.

Пусть М = m1 m2 • … • m t – произведение всех m i . Обозначим М i = M / m i.

И пусть N i будет обратным к М i (mod m i), i = 1, 2, … , t, т.е.

М i • N i  1 (mod m i).

Так как НОД (М i , m i) = 1, то обратный элемент N i существует и легко находится по алгоритму Евклида из соотношения

М i • N i + m i • n i = 1, i = 1, 2, … , t.

Сравнения х  а i (mod m i), i = 1, 2, … , t, имеют в интервале

[0, M – 1] единственное общее решение

х = a i • N i • М i (mod M).

Рассмотрим частный случай. Пусть М = m1 m2 , где m1 и m2 – взаимно простые числа. Тогда для произвольных целых а1 < m 1 и а 2 < m 2 существует единственное число х, х < М, такое, что

х  а 1 (mod m 1) и х  а 2 (mod m 2).

Чтобы найти значение решения х, сначала используют алгоритм Евклида для вычисления значений N 1 и N 2 , таких, что

М 1 • N 1  1 (mod m 1) и М 2 • N 2  1 (mod m 2).

Здесь M m 1 m 2 M

M 1 = = = m 2 ; M 2 = = m 1.

m 1 m 1 m 2

Затем вычисляют значение

х = (a 1 • N 1 • М 1 + a 2 • N 2 • М 2 ) (mod M).

Пример. Решить систему из двух сравнений

х  1 (mod 5),

х  10 (mod 11)

и найти общее решение х по модулю 55.

Здесь: m 1 = 5; m 2 = 11; M = m 1 m 2 = 5 • 11 = 55;

а 1 = 1; а 2 = 10; M 1 = М / m 1 = m 2 = 11; M 2 = М / m 2 = m 2 = 5.

Найдем значения N 1 и N 2, обратные к M 1 и M 2 сответственно по mod m 1 и mod m 2 :

М 1 • N 1  1 (mod m 1), 11 • N 1  1 (mod 5)  N 1 = 1,

М 2 • N 2  1 (mod m 2), 5 • N 2  1 (mod 11)  N 2 = 9.

Вычислим общее значение

х = (a 1 • N 1 • М 1 + a 2 • N 2 • М 2 ) (mod M) =

= (1 • 11 • 1 + 10 • 5 • 9 ) (mod 55) = (11 + 450) (mod 55) =

= 461 (mod 55) = 21 (mod 55).

Итак, х = 21 (mod 55).