Правила арифметики вычетов
Правила арифметики вычетов похожи на обычную арифметику: 1. (a + b) mod n = ((a mod n) + (b mod n)) mod n, 2. (a - b) mod n = ((a mod n) - (b mod n)) mod n, 3. (a * b) mod n = ((a mod n) * (b mod n)) mod n, 4. (a (b+c)) mod n = (((a*b) mod n) + ((a*c) mod n)) mod n. В арифметике вычетов возведение в степень выполняется без огромных промежуточных результатов. Вычисление степени некоторого числа по модулю другого числа вида Один из таких приемов называется цепочкой сложения, либо методом двоичных квадратов и умножения. Рассмотрим примеры. Пример 1. Пример преобразования выражения a2 mod n = (a*a) mod n = ((a mod n) * (a mod n)) mod n = (a mod n)2 mod n. Рассмотрим достоинство такого преобразования на числовом примере. Пусть а =50, n=2. Тогда a2 mod n =502 mod 2 = 2500 mod 2 = 0, т.е. промежуточный результат вычисления (возведение в степень) давало число 2500. То же самое путем преобразования: a2 mod n =((a mod n)2 mod n = ((0)2 mod 2 = 0, т.е. промежуточный результат вычисления (возведение в степень) дает число 0. Таким образом, в результате преобразования удается огромные результаты промежуточных вычислений, которые могут привести к переполнению формата числа в оперативной памяти компьютера и к невозможности получения окончательного результата. Пример 2. Некоторые цепочки сложения: a4 mod n = (a2*a2) mod n = ((a2 mod n)*(a2 mod n)) mod n = ((a2 mod n)2 mod n. a8 mod n = (a4*a4) mod n = ((a4 mod n)*(a4 mod n)) mod n = ((((a2 mod n)2 mod n)* (((a2 mod n)2 mod n)) mod n = ((a2 mod n)2 mod n)2 mod n. Таким образом, метод двоичных квадратов и умножения использует простую и очевидную цепочку сложений, в основе которой лежит двоичное представление числа.
|