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

Основные математические принципы в реализации некоторых алгоритмов информационной безопасности. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Теорема 2.8. Пусть

,..., ,aanZ
1
ществуют такие целые числа
av a v d
11
, ..., ,
vv
1
n ≥ 2. Если
что
n

nn
.
Заметим, что обратное утверждение не верно.
, ..., ,()
aad
1
n
то су-
Определение.
, ..., 1.()
aa
1
n
Теорема 2.9.
, ...,aanZ
1
, ..., , 2aanZn
1
называются взаимно простыми, если
, взаимно просты ↔ существуют
такие целые числа v1, …, vn, что
av a v

11
nn
1.
Приведем наиболее часто используемые свойства взаимно простых чисел.
Теорема 2.10 (свойства простых чисел). Для любых целых чисел
а, b, c, справедливы утверждения:
1) (а, b) = 1, (a, с) = 1 => (а, bс) = 1;
2) а |bc, (а, b) = 1 => а|с;
3) а|с, b|с, (а, b) = 1 => аb|с;
4) (а, b) = с, с ≠ 0 => (а/с, b/с) = 1.
Доказательство
1) Применим теорему 2.9. Тогда для чисел а, b и a, с существуют
u1, v1 и u2, v2 такие, что
au bv
11
 
au cv
22
1,
1.
Перемножим и сгруппируем данные уравнения:
a au u bv u cu v bc v v v
12 12 12 12


U
() 1.
au bc v

() 1,
V
Следовательно, а и bс взаимно простые, (а, bс) = 1.
21
2) По условию при подходящих q, u, v Z выполняются равенства:
bс = aq, au + bv = 1.
Умножив последнее равенство на с и заменив после этого bс на aq, получим a(cu) + a(qv) = с и a(cu + qv) = с.
Следовательно, а|с.
3) Как и во втором случае, имеем равенства:
, , 1 , , ,().с aq с bq au bv q q u v Z 
12 12
Умножив последнее равенство на с и учитывая два предыдущих равенства, получим:
21
Отсюда видно, что ab|с.
.abq u abq v с
4) Из теоремы 1.8 следует, что с|а, с|b и существуют
целые числа u, v, удовлетворяющие равенству au + bv = с.
Отсюда имеем
ab ab
uv
1, т. е. , 1,

cc cc
 

что и требовалось доказать.
Вернемся к следствию из теоремы 2.7, которое гласит, что суще­ствуют такие целые числа u, v, которые в комбинации с a, b Z дают значение НОД d = (a, b). Знание этих чисел необходимо для получения большого числа принципиально важных результатов, включая выбор ключей в системе шифрования RSA.
Ответ на вопрос «как лучше вычислять целые числа u, v» предло­жил Д. Кнут в книге «Искусство программирования» [13]. Алгоритм описан во втором томе этого сочинения [13]. Автор предложил новую процедуру последовательного вычисления НОД, которая получила название «Расширенный алгоритм Евклида».
Основная идея расширенного алгоритма Евклида состоит в том, что все промежуточные действия фиксируются в табличном виде.
Предположим, что для вычисления наибольшего общего делителя чисел a, b Z необходимо выполнить последовательность делений (2.1). Перепишем ее, сопровождая каждую операцию записью предпо­лагаемого представления остатка:
abq r
brq r
12 1
и
11
и
111
222
22
;raxby
;raxby
rrq r
j
j
j
x
j
1233
и
;raxby
333
rrqr
2344
и
444
;raxby
…..
Числа
rrqr
3211nnnn

rrq

, ..., ,
xx
11
n
, ...,
yy
11
и
21nnn
n
raxby

111
nnn
и
r

0.
n
удобнее отобразить в табличном ви-
;
де (табл. 2.2).
Таблица 2.2
Табличное представление данных расширенного алгоритма Евклида
Остатки (r) x y Частные (q)
a x-1 y–1 b x0 y0 r1 x r2 x r3 x
y1 q1
1
y2 q2
2
y3 q3
3
… … … …
r
x
n–2
r
x
n–1
y
n–2
y
n–1
q
n–2
q
n–1
n–2
n–1
Стоящие в первом столбце числа не являются остатками в каких­либо операциях деления.
Предположим, что мы получили таблицу заполненной до строки (j – 1). Тогда для заполнения j-й строки необходимо выполнить опера­цию вида:
rrqr rr
21 1
jjj j j
,0 ;


rr rq
21
jjj

.
Следовательно, из строк (j – 1) и (j – 2) возможно получить значе- ния
,, ,
xyy
2121
jjj

raxbyиraxby
222111
, представив итоговые выражения в виде

jjjjj

.
23
Получим
j
j
j
x
x
()()
rax by ax byq

22 11
jj jjj
 
–
()(
ax x q bby y q
 
21 21
 
jj j jj
–.)
Поэтому
xx qx yy qy

21 2 1
jjj jjjj
и .

Заметим, что для вычисления итоговых значений xj и yj понадоби­лись только частное qj и данные из двух строк таблицы, непосред-
ственно предшествующих j-й. Вот почему алгоритм Кнута такой эф­фективный. Для заполнения очередной строки достаточно знать две строчки, непосредственно предшествующие ей; все остальные строчки хранить не обязательно.
Итак, мы получили рекуррентную процедуру. Все, что необходимо – это научиться ее запускать. Именно для этого мы и добавили в таблицу две «незаконные» строки. Найти в них значения очень просто. Прида­вая им тот же смысл, что и в остальных строках, мы должны получить:

11 00

и .a ax by b ax by
Зададим начальные значения:
1, 0, 0, 1.xy xy
1100


В результате цепочки делений с остатком мы получим равенство
(, )
ab r
и вычислим такие целые числа
1
n
ax by d r
11 1
nn n


и
1n
.
что
y
1n
Значит,
,.
uy v

11
nn

Приведем численный пример расширенного алгоритма Евклида для чисел 1234 и 54. Представим процесс вычисления в табличном ви­де аналогично табл. 2.3.
Предпоследняя строка в схеме будет содержать ответ (d = 2, u = –7, v = 160). Действительно 1234  (–7) + 54 160 = 2.
Представим более подробно алгоритм для программной реализа­ции обобщенного (расширенного) алгоритма Евклида.
24
Таблица 2.3
X
Процесс вычисления расширенного алгоритма Евклида
Остатки (r) x y Частные (q)
1234 1 0
54 0 1 46
8
6
2
0 – – q = 3
1 – 22 0 = 1 0 – 22 1 = –22 0 – 1 1 = –1 1 – 1 (–22) = 23
1 – 5 (–1) = 6 –22 – 5 23 = –137
–1 – 1 6 = –7 23 – 1 (–137) = 160
Введем три кортежа
,,(,)
xx x
123
,,(,)Yyyy
123
Тогда алгоритм на псевдокоде выглядит следующим образом.
Рекурсивная функция d(a, b), u, v.
1. (a, 1, 0)→X, (b, 0, 1)→Y.
2. WHILE (y1 ≠ 0).
3. q = x1 div y1.
q = 22
q = 1
q = 5
q = 1
,,(.)Tttt
123
4. T = (x1 div y1; x
– qy2, x
2
– qy3).
3
5. X = Y, Y = T.
6. return X = d(a, b), u, v.
Пример. Пусть a = 28, b = 19. Найдем числа u и v, удовлетворяю-
щие следствию 1.
X 28 1 0 Y X 19 0 1 T Y X 9 1 –1 q = 1 T Y X 1 –2 3 q = 2 T Y 0 19 –28 q = 9
Таким образом, вначале в строку X записываются значения (28, 1, 0), а в строку Y – значения (19, 0, 1). Третья строка вычисляется по схеме.
25
После этого в качестве строки Х берется вторая строка в схеме, а в ка-
честве Y – третья, и опять вычисляется строка T. Этот процесс продол­жается до тех пор, пока первый элемент строки Y не станет равным нулю. Тогда предпоследняя строка в схеме будет содержать ответ (d = 1, u = –2, v = 3). Действительно 28 (–2) + 19 3 = 1.
Во многих задачах криптографии для заданных чисел с и m, где
(c, m) = 1, требуется находить такое число z < m, что
cz mod m = 1.
Покажем, как можно вычислить инверсию с помощью обобщенно­го алгоритма Евклида. Для это представим выражение в виде
cz – km = 1.
Или

.(),)(mk czdmc
Таким образом, для нахождения числа x нужно использовать обобщенный алгоритм Евклида. Значение второго элемента в данном случае не является необходимым, поэтому можно не вычислять вторые элементы для строк X, Y, T. Кроме того, если число z получается отри- цательным, то нужно прибавить к нему модуль до положительного значения.
Пример. Вычислим 7
–1
mod 11. Используем аналогичную запись
вычислений.
11 0
7 1
4 –1 q = 1
3 2 q = 1
1 –3 q = 1
0 11 q = 3
Получаем z = –3 или –3 + 11 = 8. Ответ: 7–1 mod 11 = 8.
Действительно 7 8 mod 11 = 1.
26
Задания для самостоятельного решения
1. Пользуясь алгоритмом Евклида, найти наибольший общий дели-
тель следующих систем чисел:
1) 546 и 231; 2) 1001 и 6253; 3) 1517 и 2257; 4) 2737, 9163 и 9639;
5) 1411, 4641 и 5253.
2. Разложением на простые множители найти наименьшее общее
кратное следующих систем чисел:
1) 360 и 504; 2) 2520 и 6600; 3) 187 и 533; 4) 9163, 2737, 9639;
5) 374, 1599 и 9061.
3. Доказать, что если а = cq + r и b = cq
+ r1, где а, b, c, q, q1, r, r1 –
1
целые неотрицательные числа и с – целое положительное число, то (а, b, c) = (c, r, r1). Сформулировать вытекающее отсюда правило
нахождения (а, b, c). Обобщить правило на случай n чисел.
4. Пользуясь выведенным в предыдущей задаче правилом, найти
наибольший общий делитель следующих систем чисел: 1) 299, 391 и 667; 2) 588, 2058 и 2849; 3) 31 605, 13 524, 12 915 и 11 067; 4) 279, 372 и 1395; 5) 2988, 3735, 8134 и 14 525.
5. Дано: а = 899, b = 493. Найти d = (а, b) и определить х и у,
посредством которых можно осуществить линейное представление НОД в виде
d = ах + by.
6. Решить предыдущую задачу для следующих пар чисел: 1) а = 1445,
b = 629; 2) а = 903, b = 731; 3) а = 1786, b = 705; 4) а = 4543, b = 885;
5) а = 6919, b = 1443.
7. Для каждой приведенной ниже пары целых чисел a и b найти
наибольший общий делитель и такие числа x и y, что d = ах + by: 1) 14 и 35; 2) 252 и 80; 3) 6643 и 2873; 4) 272, 828, 282 и 3242 (обобщите предварительно все понятия на случай, когда чисел больше двух).
8. Пусть n – натуральное число, большее единицы. Покажите, что:
1) (n, 2n + 1) = 1; 2) (2n + 1, 3n + 1) = 1; 3) (n! + 1, (n + 1)! + 1) = 1.
9. Покажите, что для целых чисел a, b и n > 0 выполняется ра-
венство
nn n n n n n
b a bab b ab a ba a

()( ).
12 32 21
 
27
2.4. Наименьшее общее кратное
Определение. Наименьшим общим кратным (НОК) целых чисел
, ...,
aa
1
условиям:
при n ≥ 2 называется любое целое число k, удовлетворяющее
n
а) k есть общее кратное чисел
, ...,
aa
1
б) k делит любое общее кратное чисел
, т. е.
n
ak a k
1
, ...,
aa
1
n
, ... ;||,
, т. е.
n
kZak ak kk .
111 1 1
Множество всех НОК чисел
Теорема 2.11. Если целые числа
| ,..., | |
, ...,
aa
1
n
обозначим
n
, ...,
aa
1
НОК , ..., .{}
aa
1
отличны от нуля и для
n
n
них существует хотя бы один НОК, то они имеют ровно два НОК, ко­торые отличаются только знаком.
Далее НОК чисел
, ...,
aa
1
обозначим
n
, ..., .[]
aa
1
n
Следующие две теоремы решают вопрос о существовании НОК любых целых чисел и дают метод нахождения НОК.
Теорема 2.12. Если хотя бы одно из целых чисел а, b отлично от нуля,
то для них НОК существует и единственное неотрицательное НОК нахо­дится по формуле
||
(, )
ab
ab
.
[, ]
ab
Доказательство
Обозначим (а, b) = d. Покажем, что число
ab
удовлетворяет усло-
d
виям определения НОК:
ab b a ab ab
ab a b

,
.
ddd d d
Пусть k Z, k|a и b|k
.
ak bk
|, ,
dk
dd dd
28
ab ab

Тогда по теореме 2.10 (34) имеем
kab
dd
По теореме 2.11 НОК{, }, 0 [, ]
ab ab ab
, что и тре-
ab ab
ddd
бовалось доказать.
Теорема 2.13.
2, , ...,
naaZ
 1![ , ..., ] 0,
1
n
aa
n

НОК{, }
.
[ , ..., ] ... [ , ] , ...,
aa aaa a
1123
nn
.
Пример. Найдем НОД и НОК для чисел 2346, 646.
Первый способ. Используем для вычисления НОД расширенный алгоритм Евклида (табл. 2.4).
Таблица 2.4
Используем для вычисления НОД расширенный алгоритм Евклида
Остатки (r) x y Частные (q)
2346 1 0
646 0 1
408
238
170
68
34
0
1 – 3 0 = 1 0 – 3 1 = –3
0 – 1 1 = –1 1 – 1 (–3) = 4
1 – 1 (–1) = 2 –3 – 4 1 = –7
–1 – 2 1 = –3 4 – (–7) 1 = 11
2 – (–3) 2 = 8 –7 – 11 2 = –29
–3 – 8 2 = –19 11 – (–29) 2 = 69
q = 3
q = 1
q = 1
q = 1
q = 2
q = 2
Последний отличный от нуля остаток равен 34, следовательно, (2346, 646) = 34. Предпоследняя строка в схеме будет содержать так-
же числа u = 8, v = –29. Действительно 2346 8 + 646 (–29) = 34.
Далее находим НОК:
[2346,646] 44 574
| 2346 646 | | 2346 646|

.
(2346,346) 34
29
Задания для самостоятельного решения
s
s
s
1. Дано: (а, b) = 24, [а, b] = 2496. Найти а, b.
2. Сумма двух чисел 667, а отношение НОК к их НОД равно 120.
Найти эти числа.
3. Найти два числа, зная, что сумма частных от деления каждого из
них на их НОД равна 18 и НОК их равно 975.
2.5. Распределение простых чисел
Напомним, что натуральное число р ≠ 1 называется простым, если оно не имеет натуральных делителей, отличных от единицы и р, в про­тивном случае оно называется составным. Число 1 не относится ни к простым, ни к составным числам.
Укажем некоторые свойства простых чисел в дополнение к тео­реме 2.10.
Утверждение 2.1. Пусть р — любое простое число. Тогда
а) : ( | или (, ) 1)aZpa ap  ;
б)
,:| | или |ab Z p ab p a p b

в) если q – простое число, тo q = p или (q, p) = 1.
Доказательство
а) Пусть р|а. Учитывая, что (а, р) = d {1, р} и d | а, то d = 1.
б) Предположим противное. Пусть при р|ab: р|а, то по свойству а) (а, р) = 1, и тогда по теореме 1.10, б) р|b.
в) Если q – простое число и q ≠ р, то по определению простого чис­ла р|q, а тогда по свойству а) (q, p) = 1, что и требовалось доказать.
Сформулируем основную теорему арифметики.
;
Теорема 2.13 (основная теорема арифметики). Всякое натураль-
ное число п ≠ 1 либо является простым, либо разлагается в произведе­ние простых чисел, причем такое разложение единственно с точностью до перестановки сомножителей.
Любое натуральное число п ≠ 1 однозначно представляется в виде
где s ≥ 1,
рр
1
простые числа и
.,..,
пр р
1
..., ,,
30
(2.5)
... .
р p
1
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]