ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2019

Просмотров: 12624

Скачиваний: 26

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

96 

поскольку результат деления 

a

 на 

n

 —  это  два  целых  числа, 

q

 и 

r

. Мы будем 

называть это 

уравнением деления

Пример 2.2

 

Предположим,  что 

a  =  255

,  а 

n  =  23

.  Мы  можем  найти 

q  =  11

 и 

r  =  2

используя алгоритм деления, мы знаем из элементарной арифметики  — оно 
определяется, как показано на 

рис. 2.3

. 

 

Рис. 2.3.

  Пример 2.2, нахождение частного и остатка 

 
Большинство  компьютерных  языков  может  найти  частное  и  остаток, 

используя  заданные  языком  операторы.  Например,  на  языке  C 
оператор 

"/"

 может найти частное, а оператор 

"%"

 — остаток. 

Два ограничения 

Когда  мы  используем  вышеупомянутое  уравнение  деления  в 

криптографии,  мы  налагаем  два  ограничения.  Первое  требование:  чтобы 
делитель  был  положительным  целым  числом  ( 

n  >  0

 ).  Второе  требование: 

чтобы  остаток  был  неотрицательным  целым  числом  ( 

r  >  0

 ). 

Рисунок 

2.4

 показывает эти требования с двумя указанными ограничениями. 

 

Рис. 2.4.

  Алгоритм деления целых чисел 

  

Пример 2.3

 

Предположим,  мы  используем  компьютер  или  калькулятор, 

а 

r

 и 

q

 отрицательны,  при  отрицательном 

a

.  Как  можно  сделать,  чтобы 

выполнялось  ограничение,  что  число 

r

 должно  быть  положительным? 

Решение простое: мы уменьшаем значение 

q

 на 

1

 и добавляем значение 

n

 к 

r

чтобы 

r

 стало положительным. 

 

Мы  уменьшили  ( 

–23

 ),  получили  ( 

–24

 )  и  добавили 

11

 к  ( 

–2

 ),  чтобы 

получить 

+ 9

. Полученное равенство эквивалентно исходному. 

Граф уравнения деления 


background image

 

97 

Мы  можем  изобразить  рассмотренные  выше  уравнения  с  двумя 

ограничениями  на 

n

 и 

r

 на 

рис.  2.5

 с  помощью  двух  графов.  Первый 

показывает  случай,  когда  число 

a

 положительно; 

второй  —  когда 

отрицательно. 

 

 

Рис. 2.5.

  Граф алгоритма деления 

 
Граф начинается с нуля и показывает, как мы можем достигнуть точки, 

представляющей  целое  число 

a

 на  линии.  В  случае  положительного 

a

 мы 

должны  перемещаться  на  величину 

 направо  и  затем  добавить 

дополнительную 

величину

 

r

 в  том  же  самом  направлении.  В  случае 

отрицательного 

a

 мы  должны  двигаться  на  величину 

 налево 

(число 

q

 в  этом  случае  отрицательно)  и  затем  дополнять  число 

r

 в 

противоположном  для  указанного  выше  движения  направлении.  В  обоих 
случаях значение 

r

 положительно. 

 
Теория делимости 
 

Теперь кратко обсудим 

теорию делимости

 — тема, с которой мы часто 

сталкиваемся  в  криптографии.  Если 

a

 не  равно  нулю,  а 

r  =  0

,  в  равенстве 

деления мы имеем 

a = q x n

 

Мы тогда говорим, что 

a

 делится на 

n

 (или 

n

 — делитель 

a

 ). Мы можем 

также  сказать,  что 

a

 делится  без  остатка  на 

n

.  Когда  мы  не  интересуемся 

значением 

q

,  мы  можем  записать  вышеупомянутые  отношения  как 

n|a

.  Если 

остаток  не  является  нулевым,  то 

n

 не  делится,  и  мы  можем  записать 

отношения как 

n†a

Пример 2.4

 

a.  Целое  число 

4

 делит  целое  число 

32

,  потому  что 

.  Это 

можно  отобразить  как 

4|32

.  Число 

8

 не 

делит  число 

42

,  потому 

что 

.  В  этом  уравнении  число 

2

 —  остаток.  Это  можно 

отобразить как

8†42

Пример 2.5

 


background image

 

98 

а. Отображение делимости 

13|78

7|98

–6|24

4|44

, и 

11 | (–33)

б. Отображение неделимости 

13†27

7†50

, – 

6†23

4†41

, и 

11†(–32)

Свойства 

Следующие  несколько  свойств  теории  делимости.  Доказательства 

заинтересованный читатель может проверить в приложении Q. 

Свойство 1

: если 

a|1

, то 

a=±1

Свойство 2

: если 

a|b

 и 

b|a

, то 

a=±b

 

Свойство 3

: если 

a|b

 и 

b|c

, то 

a|c

 

Свойство  4

:  если 

a|b

 и 

a|c

,  то 

a|(m  x  b  +  n  x  c)

,  где 

m

 и 

n

 — 

произвольные целые числа. 

Пример 2.6

 

а. Если 

3|15

 и 

15|45

 то, согласно третьему свойству, 

3|45

б. Если 

3|15

 и 

3|9

, то, согласно четвертому свойству, 

что означает 

3|66

 
Все делители 

Положительное  целое  число  может  иметь  больше  чем  один  делитель. 

Например,  целое  число 

32

 имеет  шесть  делителей: 

1

2

4

8

16

 и 

32

.  Мы 

можем упомянуть два интересных свойства делителей положительных целых 
чисел. 

Свойство 1

: целое число 

1

 имеет только один делитель — само себя. 

Свойство 2

: любое положительное целое число имеет по крайней мере 

два делителя — 

1

 и само себя (но может иметь больше). 

 
Наибольший общий делитель 

Одно  целое  число,  часто  необходимое  в  криптографии,  —

 

наибольший  общий  делитель

 (

НОД

)  двух  положительных  целых  чисел. 

Два  положительных  целых  числа  могут  иметь  много  общих  делителей,  но 
только  один  наибольший  общий  делитель.  Например,  общие  делители 
чисел 

12

 и 

140

 есть 

1

2

 и 

4

.  Однако  наибольший  общий  делитель  —

 

4

 (см. 

рис. 2.6

). 

 

Рис. 2.6.

  Общие делители двух целых чисел 


background image

 

99 

 

Наибольший общий делитель (НОД) двух положительных целых чисел 

— наибольшее целое число, которое делит оба целых числа. 

Алгоритм Евклида 

 

Нахождение 

наибольшего общего делителя

 двух положительных целых 

чисел  путем  составления  списка  всех  общих  делителей  непригодно  для 
достаточно больших чисел. 

К  счастью,  больше  чем  2000  лет  назад  математик  по  имени  Эвклид 

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

Алгоритм  Евклида

 основан 

на 

следующих двух фактах (доказательство см. в приложении Q): 

Факт 1

НОД (a, 0) = a

 

Факт 2

НОД (a, b) = НОД (b, r)

, где 

r

 — остаток от деления 

a

 на 

b

 

Первый  факт  говорит,  что  если  второе  целое  число  — 

0

,  наибольший 

общий делитель равен первому числу. Второй факт позволяет нам изменять 
значение 

a

 на 

b

,  пока 

b

 не  станет 

0

.  Например,  вычисляя 

НОД  (36,  10)

,  мы 

можем использовать второй факт несколько раз и один раз первый факт, как 
показано ниже. 

НОД(36,10) = НОД(10,6) = НОД(6,4) = НОД(4,2) = НОД(2,0) 

Другими словами, 

НОД (36, 10) = 2

НОД (10, 6) = 2

, и так далее. Это 

означает,  что  вместо  вычисления 

НОД  (36,  10)

 мы  можем  найти 

НОД  (2, 

0)

.

Рисунок  2.7

 показывает,  как  мы  используем  вышеупомянутые  два  факта, 

чтобы вычислить 

НОД (a, b)

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                              Рис. 2.7.

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

  


background image

 

100 

 

Для  определения  НОД  мы  используем  две  переменные, 

r

1

 и 

r

2

,  чтобы 

запоминать  изменяющиеся  значения  в  течение  всего  процесса.  Они  имеют 
начальное  значение 

a

 и 

b

.  На  каждом  шаге  мы  вычисляем  остаток  от 

деления 

r

1

 на 

r

2

 и  храним  результат  в  виде  переменной 

r

.  Потом  заменяем 

r

1

 

на 

r

2

 и 

r

2

 на 

r

 и  продолжаем  шаги,  пока 

r

 не  станет  равным 

0

.  В  этот  момент 

процесс останавливается и 

НОД (a, b)

 равен 

r

1

Пример 2.7

 

Нужно найти наибольший общий делитель 

2740

 и 

1760

Решение

 

Применим  вышеупомянутую  процедуру,  используя  таблицу.  Мы 

присваиваем начальное значение 

r

1

 

2740

 и 

r

2

 значение 

1760

. В таблице также 

показаны значения 

q

 на каждом шаге. Мы имеем 

НОД (2740, 1760) = 20

 

r

1     

 

r

2

 

 

2

740 

1

760 

980 

1

760 

9

80 

780 

9

80 

7

80 

200 

7

80 

2

00 

180 

2

00 

1

80 

20 

1

80 

2

 

2

 

 

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

Даны  два  целых  числа 

a

 и 

b

.  Нам  зачастую  надо  найти  другие  два 

целых числа, 

s

 и 

t

, такие, которые 

s x a + t x b = НОД (a,b) 

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

 может вычислить 

НОД (a, b)

 и в то 

же  самое  время  вычислить  значения 

s

 и 

t

.  Алгоритм  и  процесс  такого 

вычисления показан на 

рис. 2.8

.