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

МОЗИ_Лаб_04_(Расширенный_алгоритм_Эвклида)

.doc
Скачиваний:
1
Добавлен:
09.04.2023
Размер:
190.46 Кб
Скачать

Лабораторная/практика №4.

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

Кроме вычисления d=НОД(a,b), алгоритм Эвклида позволяет дополнительно определить два целых числа α и β, таких что:

α * a + β * b = d; (соотношение Безу)

α и β – коэффициенты Безу.

Замечание, «почти всегда» если α положительна, то β отрицательно и наоборот.

Эти два числа можно вычислять одновременно с выполнением шагов в алгоритме Эвклида по следующей схеме:

Ручной метод «прямой»:

Рассмотрим шаги получения НОД (24;15):

24 = 15 * 1 + 9

15 = 9 * 1 + 6

9 = 6 * 1 + 3

6 = 3 * 2 + 0

Добавим для каждого шага представление «текущего» остатка как линейной комбинации исходных чисел a и b:

9=24+(-1)*15

6=15-9=15-(24-15)=2*15+(-1)*24

3=9-6=24+(-1)*15-[2*15+(-1)*24]=2*24+(-3)*15; т.е. α=2; β=-3.

Алгоритм в общем виде: Найти: НОД(a,b) a =b *q1 + r1 и r1 = α * x1 + β * y1 b =r1 *q2 + r2 и r2 = α * x2 + β * y2 ………………………………

rn-3=rn-2 *qn-1 +rn-1 и rn-1= α * xn-1 + β * yn-1 //на этом шаге получаем α,β rn-2=rn-1 *qn rn=0 Ответ: НОД(a,b)=rn-1 //ответ – последний ненулевой остаток.

Представим это в виде таблицы:

остатки

частные

x

y

a

*

x(-1)

y(-1)

b

*

x0

y0

r1

q1

x1

y1

r2

q2

X2

y2

rn-2

qn-2

xn-2

yn-2

rn-1

qn-1

xn-1

yn-1

Заметим, что в начале этой таблицы появились две дополнительные строчки.

Они нам помогут вычислить x1 и y1 :

x(-1)=1, y(-1)=0, x0=0, y0=1;

xj=xj-2-qj*xj-1; yj=yj-2-qj*yj-1; //Пояснение соотношений – см. лекции.

Пример расширенного алгоритма Эвклида для чисел 1234 и 54

остатки

частные

x

y

1234

*

1

0

54

*

0

1

46

22

1-22*0=1

0-22*1=-22

8

1

0-1*1=-1

1-1*(-22)=23

6

5

1-5*(-1)=6

-22-5*23=-137

2

1

-1-1*6=-7

23-1*(-137)=160

0

3

*

*

α = -7; β=160. Действительно: (-7)*1234+160*54=2.

Нахождение обратного элемента по модулю.

Определение. Обратным к числу a по модулю n называется такое число b (обычно обратное к a обозначают как a-1), что: a*b = 1 mod n ( a * a-1 = 1 mod n )

Рассмотрим выражение: a * х + n * y = 1 (это и есть соотношение Безу)

возьмём от обеих частей уравнения остаток по модулю n, то получим:

a * х = 1 mod n, х – и есть обратный элемент к a. Пример: m=11, a=3; 4*3+(-1)*11=1; 4*3=1 mod 11, т.е. a-1 = 4.

Если получаете отрицательный ответ – переведите в положительный: через n-х.

Нахождение противоположного элемента по модулю.

Определение. Противоположным к числу a по модулю n называется такое число b, что: a+b = 0 mod n. b записывают в виде положительного числа.

Факультативное задание. Расширенный бинарный алгоритм Евклида* (факультативно, задание может быть пропущено, если же выполнено, то отметьте это в имени файла отчета – будет засчитано как «+» к зачёту по предмету).

Вход: Целые числа а, b; 0 < b ≤ а.

Выход: d = НОД(a, b); и такие целые числа х, у, что ах + by = d.

Алгоритм:

  1. Положить g ← 1.

  2. Пока оба числа а и b четные, выполнять а ← a/2, b ← b/2 , g ← 2g до получения хотя бы одного нечетного значения а или b.

  3. Положить u ← a, v ← b, А ← 1, В ← 0, С ← 0, D ← 1.

  4. Пока u ≠ 0, выполнять следующие действия:

    1. Пока u четное, положить u ← u/2. Если оба числа А и B четные, то положить A ← A/2, B ← B/2. В противном случае положить A ← (A+b)/2, B ← (B–a)/2

    2. Пока v четное, положить v ← v/2.

Если оба числа С и D четные, то положить С ← C/2, D ← D/2. В противном случае положить C ← (C + b)/2, D ← (D – a)/2

    1. При u ≥ v положить u ← u – v, А ← А – С, В ← В – D. В противном случае положить v ← v – u, C ← C–A, D ← D – B.

  1. Если u=0, то

      1. Положить d ← gv, x ← С, у ← D.

      2. Результат: d, х, у.

Другой вариант описания расширенного бинарного алгоритма Евклида:

Задание.

Необходимо выбрать свой вариант (варианты) (вариант определяется номером студента в списке группы, если в бригаде несколько человек, то необходимо выполнить соответствующее число соответствующих вариантов).

  1. Выполнить «вручную» расширенный алгоритмом Эвклида (возможно использование результатов выполнения предыдущей работы).

20 = 12 * 1 + 8

12 = 8 * 1 + 4

8 = 4 * 2 + 0

НОД = 4

8 = 20 + (-1) * 12

4 = 12 – 8 = 12 – (20 - 12) = 2 * 12 + (-1) * 20

A = 2

B = -1

88 = 26 * 3 + 10

26 = 10 * 2 + 6

10 = 6 * 1 + 4

6 = 4 * 1 + 2

4 = 2 * 2 + 0

НОД = 2

10 = 88 + (-1) * 26 * 3

6 = 26 – 10 * 2 = 26 – ((88 – 26 * 3) * 2) = 6 * 26 + (-4) * 88

4 = 10 – 6 = 10 – (88 – 26 * 3

  1. Выполнить вычисление расширенного алгоритма Эвклида в среде Excel или в любой другой программной среде, которая позволяет выводить промежуточные шаги выполнения алгоритма.

  2. Найти обратный элемент по модулю,.

Номер

Параметры для выполнения расширенного алгоритма Эвклида (для «ручного» выполнения)

Параметры для выполнения расширенного алгоритма Эвклида (для «программного» выполнения)

a

b

a

b

1

22

28

558412

282494

2

44

20

830468

417526

3

26

44

1111492

564422

4

20

12

1509212

759518

5

34

20

1903996

956402

6

18

52

2380844

3643674

7

22

56

2830444

4298262

8

44

40

3429796

5212254

9

26

88

3941396

5949114

10

20

24

1125851

1129913

11

34

40

1307491

1316503

12

18

52

1500329

1520081

13

22

28

1678583

1689179

14

44

20

1927231

1933033

15

26

44

1081012

545222

16

20

12

1542844

775042

17

34

20

2123276

1070242

18

18

52

2687396

1353074

19

22

56

851189

854779

20

44

40

1025977

1030187

21

26

88

3239732

4877454

22

20

24

3198268

4859598

23

34

40

2264828

4261494

24

18

52

2861708

3438222

25

22

28

2992324

4900326

Номер

Параметры для нахожденя обратного элемента к “a” по модулю “n”

a

n

1

11

19

2

5

19

3

4

23

4

3

23

5

11

23

6

2

23

7

3

29

8

4

29

9

5

29

10

6

29

11

7

31

12

8

31

13

9

31

14

10

31

15

11

31

16

12

19

17

13

19

18

14

19

19

15

17

20

16

17

21

2

17

22

3

17

23

4

17

24

5

17

25

6

19

Отчет.

Содержание отчёта:

  1. Стандартный титульный лист.

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

  3. Формулировка задание на вычисления.

  4. Шаги выполнения вычисления.

  5. Проверку правильности найденных решений, если применимо (для расширенного алгоритма Эвклида проверить правильность нахождения коэффициентов Безу).

При выполнении заданий с помощью программирования в какой-либо среде – приводить программный код или указывать используемые формулы в соответствующей среде (например, формулы в ячейках Excel) и приводить вывод всех промежуточных шагов алгоритма. По программному коду в средах отличных от Excel возможны дополнительные вопросы с предложением внести изменения в порядок вычисления отдельных переменных или способ вывода промежуточных результатов.

Файл с отчётом должен иметь название по следующему шаблону: Лаб_(номер лабы(две цифры))_(номер группы)_ФамилияИО1_ФамилияИО2_ФамилияИО3. Пример: Лаб_01_ИКБ-82_Иванов_ДИ_Петров_ЕН.

Соседние файлы в предмете Математические основы защиты информации