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

деление по модулю a mod n

.doc
Скачиваний:
40
Добавлен:
15.03.2015
Размер:
33.79 Кб
Скачать

деление по модулю a mod n

Результатом этой операции является остаток от целочисленного деления, например, если мы делим 11 на 3, то целых частей у нас получается 3, (так как 3*3=9), в остатке будет 2, это число и будет результатом деления по модулю:

11/3 = 3 целых и 2 в остатке. Т.е. 11 mod 3 = 2 (11-3*3=2)

Напоминание:

В языке Си операция взятия вычета по модулю обозначается % - деление по модулю.

11%3 = 2 (остаток)

умножение по модулю (a*b) mod n

Положим, что нам требуется выполнить умножение следующего вида: res = (a*b) mod n, где 0 <= a < p; 0 <= b < p; n– простое число.

mod n – операция нахождения остатка от деления по модулю или деления по модулю.

Если выполнять операции «в лоб», то нужно умножить a на b , потом разделить на n и взять остаток. Этот подход имеет право на существование, но чрезвычайно затратен по количеству операций и довольно сложен для реализации.

возведение в степень по модулю (a ^ k) mod n

Пусть у нас есть некоторое число a, которое требуется возвести в степень k по модулю n. Можно просто умножить a само на себя k раз, затем разделить на n и взять остаток. Но при больших размерах чисел это довольно сложная и медленная операция.

(mod 511) = 28153056843 (mod 511) = 359,

Быстрое возведение в степень

Идея в том, чтобы представить возведение в степень в виде возведений в квадрат и умножений на основание.

Например Операцию приведения по модулю надо выполнять после каждой промежуточной операции, чтобы не возникало переполнения.

В данный момент модулярная арифметика применяется в следующих областях: цифровая обработка сигналов, криптография, обработка изображений/аудио/видео и.т.д.

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

http://masteroid.ru/articles/view/1330/

Сравнения и классы вычетов из «Кванта»

http://kvant.mccme.ru/1978/10/sravneniya_i_klassy_vychetov.htm