Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Для решения более сложных сравнений

Расширенный алгоритм Евклида

Основные способы нахождения обратных величин

Существуют три основных способа нахождения обратных величин

а –1 ≡ х (mod n).

 

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

2. Если известна функция Эйлера j(n), то можно вычислить

а –1 (mod n) ºа j(n) – 1 (mod n), используя алгоритм быстрого возведения в степень.

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

 

Примеры.

1. Поочередная проверка значений 1, 2, …, n – 1, пока не будет найден х = а – 1 (mod n), такой, что а • х º 1 (mod n).

Пусть n = 7, a = 5. Найти х = а – 1 (mod n).

а • х º 1 (mod n) или 5 • х º 1

n – 1 = 7 – 1 = 6.

Получаем х = 5 – 1 (mod 7) = 3.

Результаты проверки приведены в таблице 5.2.

Таблица 5.2 – Нахождение обратной величины первым способом

х 5 • х 5 • х (mod 7)
3   1

 

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

Пусть n = 7, a = 5. Найти х = а – 1 (mod n) = 5 –1 (mod 7).

Модуль n = 7 – простое число. Поэтому функция Эйлера

j(n) = j(7) = n – 1 = 6.

Обратная величина от5 по mod 7:

а –1 (mod n) =а j(n) – 1 (mod n) = 5 6 – 1 mod 7 = 5 5 mod 7 =

= (5 2 mod 7) (5 3 mod 7) mod 7 = (25 mod 7) (125 mod 7) mod 7 =

= (4 • 6) mod 7 = 24 mod 7 = 3.

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

 

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

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

а • u1 + b • u2 = НОД (а, b).

 

Это обобщение (расширение) алгоритма Евклида удобно описать, используя векторные обозначения.

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

а • u1 + b • u2 = u3 = НОД (а, b).

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

а • t1 + b • t2 = t3,

а • u1 + b • u2 = u3,

а • v1 + b • v2 = v3.

Для вычисления обратной величины а –1 (mod n) используется частный режим работы расширенного алгоритма Евклида, при котором:

b = n, НОД (а, n) = 1, и этот алгоритм определяет вектор (u1, u2, u3), такой, что

u3 = 1, а • u1 + n • u2 = НОД (а, n) = 1,

(а • u1 + n • u2) mod n º а • u1 (mod n) º 1,

а –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 и число а = 5.

Найти обратное число а –1 (mod 23), т.е. х = 5 –1 (mod 23).

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

Таблица 5.3 – Шаги выполнения алгоритма Евклида

q u1 u2 u3 v1 v2 v3
- - - 4 -9 - 1 n = 23 - 4 - 9 - 1 a = 5  

 

При u3 = 1, u1 = - 9, u2 = 2.

(а • u1 + n • u2) mod n = (5 • (- 9) + 23 • 2) mod 23 = 5 • (- 9) mod 23 º 1,

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

Таким образом, х = 5 –1 (mod 23) º 14 (mod 23) = 14.

 

а • х º b (mod n), т.е. b ¹ 1, x =?

используется следующий прием. Сначала решают сравнение

а • y º 1 (mod n),

 

т.е. определяют y = a –1 (mod n),

а затем находят

x = a –1 • b (mod n) = y • b (mod n).

{ Пример. Найти х для сравнения 5 • х º 9 (mod 23).

Сначала решаем сравнение 5 • y º 1 (mod 23).

Получаем y = 5 –1 (mod 23) = 14. Затем находим

x = 5 –1 • 9 (mod 23) = 14 • 9 (mod 23) = 126 (mod 23) º 11 (mod 23).

x = 11. }

 

<== предыдущая лекция | следующая лекция ==>
Вычисление обратных величин | Китайская теорема об остатках
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 448; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.