Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
290
Добавлен:
07.06.2015
Размер:
885.76 Кб
Скачать

Модулярная арифметика

В основу модулярной арифметики положена операция «деление по модулю», которая дает возможность бесконечное множество целых чисел отобразить в конечное множество классов эквивалентности (классов вычетов по модулю). Модулярная арифметика нашла широкое применение в криптографии.

ОпределениеПри заданных целых числахx ,иn> 0 операцияx (modn) «деление по модулю» возвращаетr– остаток от деления числаx на числоn (и удовлетворяет условиюx= k n + r , гдеk– целое число).

Теорема(свойства операции «деление по модулю»)

Пусть x, y иn > 0 – целые числа, причем НОД (y, n) = 1 (НОД – наибольший общий делитель; если НОД (y, n) = 1, тоy и nназывают взаимно простыми числами).

1. (x + y) mod n = [(x ) mod n + (y) mod n] (mod n).

2. ( – x ) mod n = (n – x ) mod n = n – (x mod n) .

3. (x x y) mod n = [(x ) mod n x (y) mod n] (mod n).

4. Обозначим через y-1modn величину, обратную кyпо модулюn. Она является единственным числом из интервала [1,n–1], удовлетворяющем условию (y-1x y )modn = 1.

Как и при делении рациональных чисел, деление чисел по модулю можно заменить на умножение делимого на число обратное делителю (если оно существует). Для любого y, если НОД (y, n) = 1, выражение (x x y-1) modnможно заменить на (x / y) modn .

ЗамечаниеВ операции «деление по модулю»x modn величинаkне важна. Следовательно в тождествеx modn = y modn числаx иyмогут отличаться на величину, кратнуюn. Тогда это уравнение можно записать такx ≡ y modn илиy ≡ x modn . Эта операция называется сравнение чисел по модулю, а числаxиyназывают сравнимыми по модулю.

Анализ приведенных выше свойств свидетельствует о том, что модулярная арифметика очень похожа на целочисленную. Операции сложение по модулю и умножение по модулю:

а) коммутативны (перестановка операндов не меняет результата);

б) ассоциативны (изменение последовательности выполнения операций результата не меняет).

Возведение в степень по модулю

Определение x y (modn) при x , y > 0 совпадает с определением обычной степени целого числа (т.е =xx xx (yраз) (modn)).

Введем операцию целочисленного деления на 2 (y ÷ 2):

y ÷ 2 =

y / 2, еслиy– четно

(y 1)/ 2, еслиy– нечетно

Тогда:

x y =

(x 2)(y ÷ 2) , еслиy– четно

x (x 2)(y ÷ 2), еслиy– нечетно

Алгоритм возведения целого числа в степень по модулю

ВХОД : x, y , n : целые числа x> 0, y≥ 0 n > 1

ВЫХОД : x, y (mod n).

Е (x, y , n )

1. if y = 0 return ( 1 );

2. if y (mod 2) = 0 return ( E (x2(mod n)), (y ÷ 2), n );

3. return (x ∙E (x2(mod n)), (y ÷ 2), n ) (mod n).

Операция return(значение) возвращает процесс вычисления в точку вызова функции Е (т.е. если выполнен шаг 2, то шаг 3 не будет реализован).

Пример 1Вычислить 221(mod23).

221(mod23) = Е (2, 21, 23) = 2∙ Е (4, 10, 23) = 2∙ Е (16, 5, 23) = 2∙ 16∙Е (162, 2, 23) =

= (2∙ 16)(mod23) ∙Е (162(mod23), 2, 23) = 9∙Е (3, 2, 23) = 9∙Е (9, 1, 23) = 81∙Е (9, 0, 23) =

=81 (mod23) = 12.

Ответ: 221(mod23) ≡ 12.

Пример 2Вычислить 321(mod23).

321(mod23) = Е (3, 21, 23) = 3∙ Е (9, 10, 23) = 3∙ Е (81, 5, 23) = 3∙ 12∙Е (122, 2, 23) =

= (3∙ 12)(mod23) ∙Е (122(mod23), 2, 23) = 13∙Е (6, 2, 23) = 13∙Е (36(mod23), 1, 23) =

= 13∙Е (13, 1, 23) = 13∙13∙Е (13, 0, 23) = 169 (mod23) = 8.

Ответ: 321(mod23) ≡ 8.

Пример 3Вычислить 1121(mod23).

1121(mod23) = Е (11, 21, 23) = 11∙ Е (121(mod23),10,23) = 11∙ Е (6,10,23) = 11∙ Е (36,5,23) =

= 11∙ Е (13, 5, 23) = 11∙13∙Е (169, 2, 23) = 5∙Е (8, 2, 23) = 5∙Е (64, 1, 23) = 5∙Е (18, 1, 23) =

= 5∙18∙Е (18, 0, 23) = 90 (mod23) = 21. Ответ: 1121(mod23) ≡ 21.

Соседние файлы в папке Теория Алгоритмов_заоч_14