Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6. Часть 5.doc
Скачиваний:
28
Добавлен:
20.12.2018
Размер:
2.59 Mб
Скачать

Основные способы нахождения обратных величин a–1  1 (mod n).

1. Проверить поочередно значения 1, 2, ..., n–1, пока не будет найден a–1 1 (mod n), такой, что a∙a–1 (mod n)  1.

2. Если известна функция Эйлера (n), то можно вычислить a–1 (mod n)  a(n)–1 (mod n), используя алгоритм быстрого возведения в степень.

3. Если функция Эйлера (n) не известна, можно использовать расширенный алгоритм Евклида.

Проиллюстрируем эти способы на числовых примерах.

1. Поочередная проверка значений 1, 2, ..., n – 1, пока не будет найден x = a–1 (mod n), такой что a∙x  1 (mod n).

Пусть n = 7, a = 5. Требуется найти x = a–1 (mod n).

a∙ x  1 (mod n) или 5∙x  1 (mod 7).

Получаем x = 5–1 (mod 7) = 3. Результаты проверки сведены в таблицу.

x

5  x

5  x (mod 7)

1

2

3

4

5

6

5

10

15

20

25

30

5

3

1

6

4

2

2. Нахождение a–1 (mod n), если известна функция Эйлера (n).

Пусть n=7, a=5. Найти x=a–1 (mod n)=5–1 (mod 7). Модуль n=7 – простое число. Поэтому функция Эйлера (n)=(7)=n–1=6. Обратная величина от 5 по mod 7

a–1 (mod n) = a(n)–1 (mod n) =

= 56–1 mod 7 = 55 mod 7 = (52 mod 7)(53 mod 7) mod 7 =

= (25 mod 7)(125 mod 7) mod 7 = (4  6) mod 7 = 24 mod 7 = 3.

Итак, x = 5–1 (mod 7) = 3.

3. Нахождение обратной величины a–1 (mod n) с помощью расширенного алгоритма Евклида.

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

Форма1. В этой форме во время вычисления НОД(a,b) попутно вычисляют такие целые числа u1 и u2, что

a∙u1 + b∙u2 = НОД (a,b).

Это обобщение (расширение) алгоритма Евклида удобно описать, используя векторные обозначения. При заданных неотрицательных целых числах a и b этот алгоритм определяет вектор (u1, u2, u3), такой, что

a∙u1 + b∙u2 = u3 = НОД (a, b).

В процессе вычисления используются вспомогательные векторы (v1, v2, v3), (t1, t2, t3). Действия с векторами производятся таким образом, что в течение всего процесса вычисления выполняются соотношения

a∙t1 + b∙t2 = t3, a∙u1 + b∙u2 = u3, a∙v1 + b∙v2 = v3.

Для вычисления обратной величины a–1 (mod n) используется частный режим работы расширенного алгоритма Евклида, при котором b = n, НОД (a,n) = 1, и этот алгоритм определяет вектор (u1, u2, u3), такой, что

u3 =1, a∙u1 + n∙u2 = НОД (a,n) =1,

(a∙u1 + n∙u2) mod n  a∙u1 (mod n)  1,

a–1 (mod n)  u1 (mod n).

Шаги алгоритма:

1. Начальная установка.

Установить (u1, u2, u3) : = (0, 1, n),

(v1, v2, v3) : = (1, 0, a).

2. u3 =1 ?. Если u3 =1, то алгоритм заканчивается.

3. Разделить, вычесть.

Установить q : = [u3/v3].

Затем установить

(t1, t2, t3) : = (u1, u2, u3) – (v1, v2, v3)∙q,

(u1, u2, u3) : = (v1, v2, v3),

(v1, v2, v3) : = (t1, t2, t3).

Возвратиться к шагу 2.

Пусть заданы модуль n = 23 и число a = 5. Найти обратное число a–1 (mod 23), т.е. x = 5–1 (mod 23).

Используя расширенный алгоритм Евклида, выполним вычисления, записывая результаты отдельных шагов в следующей таблице.

q

u1

u2

u3

v1

v2

v3

4

1

1

0

1

–4

5

–9

1

0

1

–1

2

n = 23

5

3

2

1

1

–4

5

–9

0

1

–1

2

a = 5

3

2

1

При u3 =1, u1 = –9, u2 = 2

(a∙u1 + n∙u2 ) mod n = (5∙(– 9) + 23∙2) mod 23 = 5∙(– 9) mod 23  1,

a–1 (mod n) = 5–1 (mod 23) = (– 9) mod 23 = (– 9 + 23) mod 23 = 14.

Итак, x = 5–1 (mod 23)  14 (mod 23) = 14.

Форма 2. Пусть НОД(а,n)=1, a>0, n>0. Рассматривается задача поиска целочисленного решения (x,y) уравнения a∙x-n∙y=1. Для решения задачи используют сначала алгоритм Евклида:

a = n ∙q0 + r1

n = r1 ∙ q1 + r2

r1 = r2 ∙ q2 + r3

r2 = r3 ∙ q3 + r4

…………………

rk–2 = rk–1 ∙ qk-1 + rk

rk–1 = rk ∙ qk +0

Находят последовательность q0, q1, q2,…,qk. Затем рекуррентно строят P012,…,Рk и Q0,Q1,Q2,…,Qk. Полагают

P-2=0, P-1=1 и Pj=qjPj-1+ Pj-2 для j0,

Q-2=1, Q-1=0 и Qj=qjQj-1+Qj-2 для j0.

Искомые значения x, y находятся по формулам

.

Обратный элемент а-1=(modn) для числа а есть решение уравнения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]