Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория чисел (расчётка).doc
Скачиваний:
92
Добавлен:
16.12.2018
Размер:
870.91 Кб
Скачать
    1. Китайская теорема об остатках

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

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

Пусть 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.6.1 – Нахождение решения системы сравнений, использующий Китайскую теорему об остатках

{возврат х  [0, M – 1], такого что х mod m i = a i (1 ≤ i ≤ t)}

begin

for i : = 1 to t do

N i : = inv (M i mod m i, m j);

x : = 0;

for i : = 1 to t do

x : = [x + M i • N i a i ] mod n;

crt : = x {crt - результат}

end

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

х  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).