Скачиваний:
3
Добавлен:
14.06.2023
Размер:
128.47 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

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

(СПбГУТ)

ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)

КАФЕДРА ЗАЩИЩЕННЫХ СИСТЕМ СВЯЗИ (ЗСС)

_______________________________________________________________________________

Отчет

по практической работе №2

«Алгоритмы Эвклида»

Выполнил студент группы ИКБ-14:

Травкина Е.А.

Проверил:

Кушнир Дмитрий Викторович

Санкт-Петербург

2023

Алгоритмы Эвклида.

  1. Нахождения наибольшего общего делителя НОД ().

В криптографии важную роль играет теория чисел. Некоторые задачи из теории чисел, используемые при построении криптографических преобразований:

Нахождение наибольшего общего делителя чисел a и b: НОД (a, b).

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

  2. Алгоритм Эвклида – нахождение НОД.

Алгоритм в общем виде: Найти: НОД(a,b) a =b *q1 + r1 0≤ri<b //q1-целое,r1-остаток от деления a на b * b =r1 *q2 + r2 0≤r2<r1 ………………………………

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

* Примечание: в выражении a=b*q1 + r1 имеется ввиду, что производится деление числа а на b и вычисляется остаток r1 и количество целых q1.

Пример НОД(1234,54) 1234 = 54 *22 +46 54 = 46 * 1 + 8 46 = 8 * 5 + 6 8 = 6 * 1 + 2 6 = 2 * 3 + 0 Последний ненулевой остаток 2, т.е. НОД (1234,54)=2

Формализованное описание алгоритма Эвклида:

Бинарный алгоритм Евклида

Бинарный алгоритм Евклида вычисления НОД оказывается более быстрым при реализации этого алгоритма на компьютере, поскольку использует двоичное представление чисел а и b.

Бинарный алгоритм Евклида основан на следующих свойствах наибольшего общего делителя (считаем, что 0 < b ≤ а):

  1. если оба числа а и b четные, то НОД(a,b) = 2 · НОД(a/2 , b/2)

  2. если число а нечетное, число b четное, то НОД (a, b) = НОД(а, b/2);

  3. если оба числа а и b нечетные, а > b, то НОД(а, b) = НОД(а – b, b);

  4. если а = b, то НОД (а, b) = а.

Формализованное описание алгоритма Бинарного алгоритма Евклида.

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

Выход. d = HOД(a,b).

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

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

  3. Положить u ← a, v ← b.

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

4.1. Пока u четное, полагать u ← u/2.

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

4.3. При u ≥ v положить: u ← u–v, в противном случае: v ← v–u.

  1. Положить d ← gv.

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

Пример («ручное» вычисление): НОД (88,52)

НОД (88,52) = 2*НОД (44,26) = 4*НОД (22,13) = 4*НОД (11,13) =

= 4*НОД (13-11,11) = 4*НОД (2,11) = 4*НОД (11-2,2) = 4*НОД (9,2) = 4*НОД (9-2,2) = 4*НОД (7,2) = 4*НОД (5,2) = 4*НОД (5-2,2) = 4*НОД(3,2) = 4*НОД (3-2,2) = 4*НОД(1,2) = 4*НОД(2-1,1)=4*НОД(1,1)=4

Задания для 23 варианта

  1. Выполним «вручную» вычисление НОД (40,34) алгоритмом Эвклида.

Ручное вычисление НОД (40,34) 40 = 34 * 1 + 6 34 = 6 * 5 + 4 6 = 4 * 1 + 2 4 = 2 * 2 + 0 Последний ненулевой остаток 2, т.е. НОД (40,34) = 2

  1. Выполним вычисление НОД (4261494,2264828) алгоритмом Эвклида в среде Excel (РИС. 1)

РИC. 1 Отображение формул ячеек

Последний ненулевой остаток выделен зеленым цветом и равен 2, т.е. НОД (4261494,2264828) = 2

  1. Выполним «вручную» вычисление НОД (40,34) бинарным алгоритмом Эвклида.

«Ручное» вычисление НОД (40,34):

НОД (40,34) = 2*НОД (20,17) = 2*НОД (10,17) = 2*НОД (5,17) =

= 2*НОД (17-5,5) = 2*НОД (12,5) = 2*НОД (6,5) = 2*НОД (3,5) =

= 2*НОД (5-3,3) = 2*НОД (2,3) = 2*НОД (1,3) = 2*НОД (3-1,1) = 2*НОД (2,1) = 2*НОД (1,1) = 2*1 = 2

  1. Выполним вычисление НОД (4261494,2264828) бинарным алгоритмом Эвклида в программной среде Python. Программный код в папке main для вычисления алгоритма (РИС. 2). Вывод программы с проверочными значениями и со значением из нашего варианта (РИС. 3)

РИС. 2 Программный код на языке python

РИС. 3 Проверка работоспособности программы

ВЫВОД:

В ходе практической работы №2 был изучен алгоритм Евклида и бинарный алгоритм Евклида. Мы научились вручную делать вычисления по этим алгоритмам, а также вычислять значения алгоритмов для больших значений на компьютере в Excel и на языке Python.

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