Скачиваний:
7
Добавлен:
01.03.2022
Размер:
967.25 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет Инфокоммуникационных сетей и систем

Кафедра Защищённых систем связи

ОТЧЁТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №4

 

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

Направление/специальность подготовки

                        10.03.01 Информационная безопасность                           

 (код и наименование направления/специальности)

Выполнил:

 

%username%                         

(Ф.И.О., № группы)                 (подпись)

 

                                                                Выполнил:

 %username%                         

(Ф.И.О., № группы)                 (подпись)

 

                                                                Выполнил:

 

%username%                      

(Ф.И.О., № группы)                 (подпись)

 

 

 

 

Проверил:

 

%username%.

(уч. степень, уч. звание,И.Ф)                 (подпись)

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

Кроме вычисления 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; //Пояснение соотношений – см. лекции.

остатки

частные

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.

Расширенный бинарный алгоритм Евклида* (факультативно).

Вход: Целые числа а, 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, х, у.

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

Вариант 10

1125851

1129913

24 ; 20

24 = 20*1 + 4

20 = 4 * 5 + 0

4 = 1*24 + (-1)*20

НОД = 4; Alpha = 1; beta = -1

Для 1125851 ; 1129913 выполняли на https://www.dcode.fr/bezout-identity

Вариант 13

1678583

1689179

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

28 ; 22

28 = 22 * 1 + 6

22 = 6 * 3 + 4

6 = 4 * 1 + 2

4 = 2*2

6 = 28 – 22

4 = 22 – 6*3 = 22 – 3*(28 – 22) = 4*22 – 3*28

2 = 6 – 4 = 28 – 22 – 4*22 + 3*28 = -5*22 + 4*28

НОД = 2; Alpha = 4; beta = -5

Для 1678583 ; 1689179

Вариант 4

20

12

1509212

759518

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

20 = 12 * 1 + 8

12 = 8 * 1 + 4

8 = 4*2 + 0

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

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

НОД = 4; Alpha = -1; beta = 2

Для 1509212 ; 759518

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