§ 4. Алгоритм Евклида
Алгоритм Евклида применяется во многих задачах арифметики. Изучим вначале его применение для отыскания наибольшего общего делителя ненулевых целых чисел a, b. Рассмотрим теперь следующую процедуру деления целых чисел с остатком, которую и называют алгоритмом Евклида:
Шаг 0: a = bq0 + r0 (0 < r0 < b)
Шаг 1: b = r0q1 + r1 (0 < r1 < r0)
Шаг 2: r0 = r1q2 + r2 (0 < r2 < r1)
…
Шаг i: ri–2 = ri–1qi + ri (0 < ri < ri–1)
…
Шаг s: rs–2 = rs–1qs + rs (0 < rs < rs–1)
Шаг s +1: rs–1 = rsqs+1 + 0 ( rs+1 = 0 )
Алгоритм Евклида
Если b | a, то r0 = 0 и алгоритм завершается на шаге 0, т.к. (a, b) = b. В противном случае имеем: (a, b) = (bq0 + r0 , b) = (r0 , b). Поэтому на шаге 1 делим с остатком b на r0 . Если r1 = 0, то (a, b) = (r0 , b) = r0 и алгоритм завершается. Если же r1 > 0, то (a, b) = (r0 , b) = (r0 , r0q1 + r1) = (r0 , r1). Поэтому на шаге 3 делим с остатком r0 на r1 , и.т.д. В результате получается убывающая последовательность остатков:
|b| > r0 > r1 > … > ri > … > > rs > … > 0 ,
которая не может убывать бесконечно. Значит, не более чем через |b| – 1 шаг – при некотором s – получится нулевой остаток, и
(a, b) = (b, r0) = (r0 , r1) = … = (ri , ri+1) = … = (rs–2 , rs–1) = (rs–1 , rs) = rs .
Значит, при r0 0 последний делитель в алгоритме Евклида (или последний ненулевой остаток, если число шагов больше нуля) равен НОД(a, b). Таким образом, доказана следующая
Теорема (о нахождении НОД(a, b) с помощью алгоритма Евклида). Для любых ненулевых целых чисел a, b их наибольший общий делитель НОД(a, b) может быть найден с помощью алгоритма Евклида не более чем за min(|a|, |b|) – 1 шагов и равен последнему делителю в этом алгоритме (или последнему ненулевому остатку, если число шагов больше нуля).
Следствие 1 (о линейном разложении НОД(a, b)). Наибольший общий делитель НОД(a, b) любых ненулевых целых чисел a, b можно представить в виде линейной комбинации чисел a и b c целыми коэффициентами x и y: НОД(a, b) = ax + by. Такое представление называется линейным разложением наибольшего общего делителя чисел a и b.
Доказательство. Будем “ползти” сверху вниз по алгоритму Евклида. Если (a, b) = |b|, то алгоритм Евклида завершается на шаге 0, и существование линейного разложения очевидно: (a, b) = a0 + b(±1). Если же число шагов в алгоритме Евклида больше 0, будем последовательно представлять остатки ri в виде ri = axi + byi (0 i s). В результате x = xs , y = ys .
Ясно, что r0 = a1 + b(–q0), так что можно положить x0 = 1, y0 = –q0 . Далее, r1 = b1+r0(–q1) = b1+(a1+b(–q0))(–q1) = a(–q1)+b(1+q0q1), т.е. x1 = –q1 , y1 = 1+q0q1 . Предположим, что коэффициенты xk , yk построены для k = 0, 1, … , i–1 < s. Тогда шаг i алгоритма Евклида даёт равенство
ri = ri–2 + ri–1(–qi) = (axi–2 + byi–2)+(axi–1 + byi–1)(–qi) =
= a(xi–2 – xi–1qi)+b(yi–2 – yi–1qi),
и можно положить xi = xi–2 – xi–1qi , yi = yi–2 – yi–1qi . Таким образом, доказано не только существование представлений ri = axi + byi (0 i s), но и указан явный способ вычисления чисел xk , yk по следующим рекуррентным формулам :
(2 k s).
Следствие 1 доказано.
Следствие 2 (о линейном разложении НОД(a1 , … , аn)). Наибольший общий делитель НОД(a1 , … , an) любых ненулевых целых чисел a1 , … , an можно представить в виде линейной комбинации этих чисел c целыми коэффициентами: НОД(a1 , … , an) = a1x1+ …+anxn . Такое равенство называется линейным разложением НОД(a1 , … , an).
Доказательство. Воспользуемся доказанной выше формулой
(a1 , … , an) = (((…((a1 , a2), a3), … ), an–1), an).
Если Dn = (a1 , … , an) и Dn–1 = (a1 , … , an–1), то Dn = (Dn–1 , an). Линейное разложение для D2 = (a1 , a2) уже построено. Если уже построены линейные разложения
Dn–1 = a1u1 + … + an–1un–1 , Dn = Dn–1u + anv,
то, подставив первое равенство во второе, получим
Dn = Dn–1u + anv = (a1u1 + … + an–1un–1)u + anv =
= a1(u1u) + … + an–1(un–1u) + anv –
линейное разложение НОД(a1 , … , an).
Следствие 2 доказано.
Примеры: 1. Найти линейное разложение НОД(–6, 8, 34).
Имеем (–6, 8, 34) = ((–6, 8), 34) = (2, 34) = 2. При этом
(–6, 8) = 2 = (–6)(–3) + 8(–2), (2, 34) = 2 = 21 + 340,
(–6, 8, 34) = 2 = (2, 34) = 21 + 340 = ((–6)(–3) + 8(–2))1 + 340 =
= (–6)(–3) + 8(–2) + 340 –
линейное разложение НОД(–6, 8, 34).
2. Найти линейное разложение НОД(–12, 16, 34).
Аналогично предыдущему, (–12, 16, 34) = ((–12, 16), 34) = (4, 34) = 2,
(–12, 16) = 4 = (–12)(–3) + 16(–2), (4, 34) = 2 = 4(–8) + 341,
(–6, 8, 34) = 2 = (4, 34) = 4(–8) + 341 = ((–12)(–3) + 16(–2))1 + 341 =
= (–12)(–3) + 16(–2) + 341 –
линейное разложение НОД(–12, 16, 34).
- Министерство образования и науки Российской Федерации
- Глава I. Азы теории чисел
- § 1. Деление целых чисел с остатком
- 5709 Mmmmmdссiiiiiiiii,
- Перевод числа из десятичной системы счисления в q-ичную
- Перевод числа из q-чной системы счисления в десятичную (схема Горнера)
- Перевод числа из одной системы счисления в другую
- Арифметические действия в позиционных системах счисления
- § 2. Деление целых чисел нацело
- Свойства делимости нацело
- § 3. Наибольший общий делитель и наименьшее общее кратное
- Основные свойства наибольшего общего делителя и наименьшего общего кратного
- § 4. Алгоритм Евклида
- Расширенный алгоритм Евклида
- § 5. Взаимно простые числа
- Простейшие свойства взаимно простых чисел
- § 6. Простые числа
- Простейшие свойства простых чисел
- § 7. Простые числа в арифметических прогрессиях
- О распределении простых чисел
- § 8. Язык сравнений
- Свойства сравнений
- § 9. Функция Эйлера
- § 10. Теоремы Эйлера и Ферма
- § 11. Признаки делимости
- § 12. Принцип Дирихле
- Глава II. Некоторые диофантовы уравнения
- § 1. Линейные диофантовы уравнения
- § 2. Общее диофантово уравнение от одного переменного
- § 5. Пифагоровы тройки
- § 6. Уравнение Ферма-Пелля
- Глава III. Великая теорема ферма и abc – проблема
- § 1. Великая теорема Ферма
- § 2. Методы Эйлера-Куммера доказательства Великой теоремы Ферма
- § 3. Гипотеза Таниямы и доказательство Великой теоремы Ферма
- § 4. Abc – Теорема для многочленов и её следствия
- § 5. Abc – Гипотеза для натуральных чисел
- § 6. Некоторые следствия из abc– гипотезы
- Глава IV. Задача о счастливых билетах
- § 1. Сведение задачи к задаче о числе наборов цифр с заданной суммой компонент
- § 2. Задача о числе наборов цифр с заданной суммой компонент
- § 3. Ещё одно решение задачи о числе наборов цифр с заданной суммой компонент