Олександр Рудик

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

(подання найбільшого спільного дільника
лінійною комбінацією з цілими коефіцієнтами)


(Інформатика та інформаційні технології
у навчальних закладах. — 2014. — № 1. — С. 58–62)

      Алгоритм Евкліда пошуку найбільшого спільного дільника можна сформулювати таким чином. Нехай {an} — така послідовність елементів евклідового кільця (наприклад, множини цілих чисел або множини многочленів), у якій an + 1 — остача від ділення an – 1 на an при n = 2, 3, … При цьому евклідова норма (відповідно абсолютна величина цілого числа або степінь многочлена) членів послідовності спадає і набуває натуральних значень. Через це існує таке натуральне k, при якому ak відмінне від 0, ak + 1 = 0. Тоді найбільші спільні дільники (НСД) пар сусідніх членів такої послідовності збігаються з ak, що є дільником усіх членів послідовності.
      Відомо, що НСД(a, b), можна подати сумою ax + by, що має найменшу евклідову норму. З означеннями й доведеннями відповідних тверджень можна ознайомитися, наприклад, за таким посібником: Олександр Рудик. Початки алгебри, аналізу, аналітичної геометрії і теорії ймовірностей. — Тернопіль, Навчальна книга – Богдан, 2005, 416 с. Цей посібник є викладом теоретичних основ відповідних розділів шкільного курсу математики, адаптованим для учнів класів з поглибленим вивченням математики.
      Зробимо зауваження щодо способу знаходження коефіцієнтів x та y у поданні найбільшого спільного дільника лінійною сумою. Нехай у послідовності, побудованій згідно з алгоритмом Евкліда, справджуються такі рівності:

a1 = a, a2 = b, an = xna + ynb при x1 = 1, y1 = 0, x2 = 0, y2 = 1.

      Позначимо через qn частку від ділення an – 1 на an . Для справдження такої рівності:

xn – 1a + yn – 1b = qn( xna + ynb) + xn + 1a + yn + 1b

зі зліченої множини розв'язків можна вибрати:

xn + 1 = xn – 1qn xn ,

yn + 1 = yn – 1qn yn .

      Зауважимо, що і первісний, і розширений алгоритми Евкліда можна застосовувати і до цілих чисел, і до многочленів. Пропонуємо розглянути приклади програм мовами Pascal і С++, що використовують описаний алгоритм для невід'ємних цілих чисел.