Что нужно знать об алгоритме Евклида — основные сведения

Алгоритм Евклида для нахождения НОД

Алгоритм Евклида — продуктивная схема для поиска наибольшего общего делителя двух целых числе (или же обобщенной меры двух отрезков). Алгоритм носит имя известного ученого Древней Греции Евклида. Именно этот ученый дал описание алгоритму в 7 и 10 частях книги «Начал». Алгоритм по праву считается самой древней цифровой схемой, которая применяется в нынешнее время.

Евклид являлся самым первым математиком из Александрийской школы. Он занимался математикой, геометрией, создал самый известный учебник по математике.

Так выглядел Евклид:

Осторожно! Если преподаватель обнаружит плагиат в работе, не избежать крупных проблем (вплоть до отчисления). Если нет возможности написать самому, закажите тут.

Так выглядел Евклид
Источник: ru.wikipedia.org

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

Евклид создал данный алгоритм для работы с натуральными числами, а также различными величинами из геометрии — к примеру, объемами, длинами, площадями. Примерно в 19 веке алгоритм распространили на иные виды математических предметов, в том числе на числа Гаусса, полиномы от единой переменной.

Все это способствовало проявлению в нынешней алгебре термина «евклидово кольцо». Евклидовыми кольцами называются виды колец, в которых возможно использовать алгоритм Евклида. Это кольца целых чисел, кольца многочленов. Позже алгоритм Евклида распространили на иные математические объекты типа узлов и многомерных полиномов.

Наибольший общий делитель: понятие, свойства

Наибольший общий делитель диады a и b — самое большое значение, на которое диада способна поделиться без остатка. Очень часто в математике используется сокращение этого термина до аббревиатуры НОД. Для диады возможно сделать запись в виде: НОД (a, b).

Свойства наибольшего общего делителя

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

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

Теорема 1

Первое свойство. Наибольший общий делитель диады a и b эквивалентен наибольшему общему делителю диады b и a. Таким образом, можно сказать, что НОД (a, b) = НОД (b, a). Смена места слагаемых не оказывает влияния на итоговые вычисления.  

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

Теорема 2

Второе свойство. В случае, когда a можно разделить на b, набор общих делителей диады a и b будет эквивалентен набору общих делителей числа b. Из-за этого можно говорить, что НОД (a, b) = b.

Доказательство для второго свойства. Каждый общий делитель диады a и b считается делителем для любого из данных типов чисел, включая число b. Из-за того, что число можно поделить без остатка на b, тогда каждый делитель для величины b можно считать делителем для величины a. Получается, что каждый делитель значения b можно считать общим делителем диады a и b.

Таким образом, в случае, когда a возможно поделить на b, то общность делителей диады a и b эквивалентна общности делителей одной величины b. Из-за того, что самый большой делитель величины b — непосредственно значение b, тогда наибольший общий делитель величины b = b. Так, НОД (a, b) = b. В особенности, в случае, когда a=b, тогда НОД (a, b) = НОД (a, a) = a = b. К примеру, НОД (25, 25) = 25.

Свойство, которое было доказано, возможно применять для нахождения значения НОД для двух чисел, в случае, когда одно может поделиться на другое. Так НОД эквивалентен одному из данных чисел, на которое можно поделить иное число. К примеру, НОД (4, 40) = 4, потому что 40 делится без остатка на 4.

Теорема 3

Третье свойство. В случае, когда a = bq + c, при котором a, b, c, q являются целыми числами, тогда набор общих делителей числе a и b эквивалентен набору общих делителей диады b и c. Эквивалентность НОД (a, b) = НОД (b, c) будет верно.

Доказательство для третьего свойства. Есть в математике уравнение a = bq + c, оно означает, что любой общий делитель диады a и b может поделить и значение c, из-за свойств делимости. Из-за этого и любой общий делитель диады b и c разделяет a. Из-за этого общность общих делителей диады a и b эквивалентны общности общих делителей величин b и c. Из-за этого обязаны соблюдаться условия равенства самых больших значений общих делителей. Получается, что НОД (a, b) = НОД(b, c) является справедливым.

Теорема 4

Четвертое свойство. В случае, когда m является произвольным натуральным числом, тогда \(НОД (ma, mb) = m\times{НОД (a, b)}\). Представим доказательство четвертого свойства. В случае, когда можно совершить умножение на величину m обеих сторон каждого уравнения алгоритма Евклида, тогда получится, что НОД (ma, mb) = mr. В таком случае показатель r является НОД (a, b). На данном свойстве НОД базируется нахождение значения НОД при помощи разложения на простые множители.

Теорема 5

Пятое свойство. Представим, что p является произвольным общим делителем величины a и b, получается, что НОД (a : p, b : p) = НОД (a, b) : p. Если конкретизировать, то в случае, когда p = НОД (a: НОД (a, b), b: НОД (a, b)) = 1.

Таким образом, величины a : НОД (a, b) и b : НОД (a, b) являются взаимно простыми. Из-за того, что a = p (a : p) и b = p (b : p), под воздействием четвертого свойства возможно сделать такую запись равенства типа \(НОД (a, b) = НОД (p(a : p), p(b : p)) = p\times{НОД (a : p, b : p)}\). Равенство доказано.

Необходимо записать, что такое НОК, это важно для понимания функции НОД. Нок — наименьшее общее кратное. Самое маленькое натуральное число, которое может поделиться на каждую из величин. 

История алгоритма Евклида

В Древней Греции ученые давали название данному алгоритму как «взаимное вычитание». По ошибке все считают, что алгоритм изобрел Евклид, но это не так. На самом деле он был описан еще в Топике пера Аристотеля, задолго до Евклида. В работе «Начала» Евклида дается описание алгоритма два раза — в седьмой книге описан процесс нахождения НОД двух натуральных чисел, а в десятой книге описан процесс нахождения самой большой совокупной мерой двух одинаковых величин. Оба вида описываются геометрически.

Математические историки предположили, что при помощи алгоритма Евклида математики в Древней Греции смогли открыть наличие несоизмеримых величин. Но, к сожалению, никаких доказательств этому факту нет. Подобный алгоритму Евклида алгоритм описывается в книге о математике периода Древнего Китая.

Алгоритм Евклида для вычисления наибольшего общего делителя

Алгоритм Евклида помогает рассчитать НОД для диады положительных чисел. Сущность алгоритма состоит в постепенном делении с учетом остатка. В итоге алгоритма должно быть выведено равенство типа:

\(a=b\times{q_{1}}+r_{1}, 0<r_{1}<b\)

\(b=r_{1}\times{q_{2}}+r_{2}, 0<r_{2}<r_{1}\)

\(r_{1}=r_{2}\times{q_{3}}+r_{3}, 0<r_{3}<r_{2}\)

\(r_{2}=r_{3}\times{q_{4}}+r_{4}, 0<r_{4}<r_{3}\)

\(r_{k-2}=r_{k-1}\times{q_{k}}+r_{k}, 0<r_{k}<r_{k-1}\)

\(r_{k-1}=r_{k}\times{q_{k+1}}.\)

Пример 1

Необходимо рассчитать НОД для чисел 64 и 48.

Решение

Мы понимаем, что a = 64, b =48. Применим алгоритм Евклида: разделим 64 на 48. Получится 1 с остатком 16. Таким образом \(q_{1}=1, r_{1}=16\). Далее необходимо поделить 48 на остаток, результат — 3. Таким образом \(q_{2}=3, r_{2}=0\).

Ответ: 16.

Пример 2

Необходимо найти НОД для чисел 111 и 432.

Решение.

Совершим деление 432 на 111. По алгоритму Евклида будет так:

  1. \(432 = 111\times3+99\).
  2. \(111 = 99\times1+12\).
  3. \(99 = 12\times8+3\).
  4. \(12 = 3\times4\).

Получается, что самый большой общий делитель для первоначальных чисел будет 3.

Ответ: \(НОД (111, 432) = 3\).

Нахождение НОД отрицательных чисел

В случае, когда одно\некоторое количество или же все значения, НОД которых необходимо вычислить, являются отрицательными, тогда НОД таких чисел равняет самому большому общему делителю модуля данных значений. Это можно объяснить тем, что противопоставленные числа a и -a обладают равными делителями.

Пример 3

Необходимо найти НОД отрицательных целых чисел -140 и -231.

Представим решение:

Модуль числа -231 будет равен 231, тогда как модуль числа -140 будет равен 140. В таком случае \(НОД (-231, -140)=НОД (231, 140)\). Согласно алгоритму Евклида получается такое уравнение:

  1. \(231= 140\times1+91\).
  2. \(140 = 91\times1+49\).
  3. \(91= 49\times1+42\).
  4. \(49 = 42\times1+7\).
  5. \(42 = 7\times6.\)

Значит, что \(НОД (231, 140) = 7. НОД\), который нужно было найти для отрицательных чисел, будет равен 7.

Ответ: \(НОД (-231, -140)=7\).

Пример 4

Необходимо найти НОД для трех чисел, среди которых есть отрицательные: -585, 81, -189.

Решение будет таким:

В процессе вычисления НОД отрицательные числа могут быть заменены абсолютными значениями. Таким образом НОД (-585, 81, -189) = НОД (585, 81, 189). Разложим на простые множители:

  1. \(585= 3\times3\times5\times13\).
  2. \(81 = 3\times3\times3\times3.\)
  3. \(189 =3\times3\times3\times7.\)

Общий простой множитель данных чисел — 3 и 3. В таком случае \(НОД (585, 81, 189) = 3\times3=9\). Значит, что \(НОД (-585, 81, -189) = 9\).

Ответ: 9.

Алгоритм Евклида «с вычитанием»

Алгоритм «с вычитанием» выглядит таким образом:

  1. Производим вычитание меньшего из большего числа.
  2. В случае, когда итог — ноль, тогда числа эквиваленты, а, значит, их можно считать НОД — цикл заканчивается.
  3. В случае, когда итоге — не ноль, тогда заменяется большее число при помощи итога вычитания.
  4. Производим снова первый шаг.
Пример 5

Необходимо найти наибольшего общего делителя для чисел 18 и 30.

Решение:

  1. 30-18=12.
  2. 18-12=6.
  3. 12-6=6.
  4. 6-6 = 0.

Ответ: НОД (30, 18) = 6.

НОД: расширенный алгоритм Евклида

Расширенный алгоритм Евклида — увеличенный вариант алгоритма Евклида, при помощи которого можно найти значение НОД целых чисел диады a и b, а также коэффициенты соотношения Безу, тогда есть цельные x и y. Получается, что: ax+by= НОД (a,b).

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

Расширенный алгоритм Евклида часто применяется в случаях, при которых a и b являются взаимно простыми. В таком случае x считается модульным обратным значения a по линии модуля b. В это же время y считается модульным обратным значения b по линии модуля a. Расширенный алгоритм Евклида для многочленов помогает рассчитать обратное число в математических расширениях, в том числе в конечных полях непростого порядка. Данный тип алгоритма активно применяют в области криптографии.

Простой алгоритм Евклида направлен на нахождение НОД диады a и b, в то время как расширенный алгоритм Евклида ищет значения показателей x и y. Получается, что: \(a\times{x}+b\times{y}=gcd(a,b)\). Расширенный алгоритм занимается поиском показателей, при помощи которых НОД диады может выражаться посредством данных чисел.

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

Занести нахождение данных показателей в алгоритм Евклида просто, нужно только найти формулы, посредством которых коэффициенты изменяются в процессе перехода от диады (a, b) к диаде (ba,@ a). Обратите внимание, что знак «@» обозначает принятие во внимание остатка процесса деления.

Представим, что было найдено решение \((x_{1}, y_{1})\) для диады (b@a, a):

\((b@a,a)\times{x_{1}}+a\times_{y_{1}}=g\), нужно решить (x, y) для диады \((a, b): a\times{x}+b\times{y}=g\). Произведем трансформацию значения \(b@a: b@a=b-\left[\frac{b}{a}\right]\times{a}\). Теперь нужно подставить данное значение в верхнее уравнение с показателями \(x_{1}, y_{1}\), тогда получится: \(g=(b@a)\times{x_{1}}+a\times{y_{1}}=(b-\left[\frac{b}{a}\right]\times{a})\times{x_{1}}+a\times{y_{1}}\), трансформируем уравнение: \(g=b\times{x_{1}}+a\times(y_{1}-\left[\frac{b}{a}\right]\times{x_{1}})\).

Произведем сравнение с первоначальным уравнением, получится: \(\begin{cases}x=y_{1}-\left[\frac{b}{a}\right]\times{x_{1}}\\y=x_{1}\end{cases}\).

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

Сложность алгоритма Евклида

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

Интересно то, что вычислительная сложность алгоритма Евклида была полноценна исследована. Данную сложность возможно описать при помощи умножения числа ходов деления, которые нужны для алгоритма, на вычислительную сложность одного хода.

Примечание 1

Самый первый анализ такого типа для алгоритма Евклида был создан ученым А.Л. Рейно в начале 19 века. Им было указано на то, что количество ходов алгоритма для диады u и v лимитируется v. Позднее им была дана другая оценка — \(\frac{v}{2}+2\).

Ученым Эмилем Леже в середине 19 века был исследован худший вариант, при котором для нахождения НОД дают постепенные числа Фибоначчи. Потом, также в середине 19 века, ученым Пьером Финком было указано, что число ходов алгоритма — не более \( 2\log_{2}{v+1}\). Это значит, что алгоритм может совершать работу за полиномиальное время от величины меньшего из диады u и v. Исследование ученого Финка дополнил ученый Габриэль Ламе через три года после Финка. Им было исследовано, что число ходов, которые нужны для окончания расчетов, не превышает в пять раз h-число чисел в десятичном виде меньшего из диады u, v.

В случае, когда наибольший общий делитель входит в одно машинное слово, каждый ход алгоритма забирает постоянное количество времени. В случае исследования Ламе получается, что вычислительная сложность — O(h). Но в расчетной модели оценка сложности расчетов единого остатка способна принимать вид \(O(h^{2})\). При таком условии суммарное время всех шагов алгоритма возможно проанализировать при помощи телескопического спектра, указав, что \(O(h^{2})\).

Для того, чтобы ускорить течение алгоритма Евклида возможно пользовать нынешними методами алгоритмов, которые базируются на способе Шёнхаге-Штрассена. Применяют этот способ для стремительно умножения целых чисел. Это формирует квазиполиномиальное время.

Сделаем предположение, что \(s = НОД (f, g)\), тогда можно применить введение в уравнение показателей m и n: \(f=m\times{s}\)  и \(g=n\times{s}\). В данном варианте \(W(f,g) = W (m,n)\) выражение возможно поделить на s. Количество ходов считается перманентным значением в процессе умножения f и g на коэффициент L. Таким образом \(W(f,g)=W(L\times{m}, L\times{n})\). Значит, что переменная, которую мы рассчитываем, находится в зависимости от НОД.

В случае, при котором для расчета, согласно алгоритму, нужно n ходов для значений f>0, g>0, обязано исполняться подобное неравенства с числами Фибоначчи \(F_{n}+2\) и \(F_{n}+1\). Получается, что \(f> =F_{n}+2\) и \(g> =F_{n}+2\). Можно доказать это выражение с помощью индукции в математике. Предположим, что n=1, тогда остаток соотношения \(\frac{f}{g}\) будет равен нулю. Самой маленькой величиной считаются \(f=2, g=1 (F_{2}\) и \(F_{3})\).

Сделаем предположение, что итог для величин на отрезке от n до m будет 1. Первым ходом с m ходами будет записываться \(f=Q_{0}\times{g}+R_{0}\). Значит, что исполнение алгоритма для величин g и \(R_{0} (g> R_{0})\) утверждает (m-1) ходов.

В итоге всех действий выводятся два нестрогих уравнения \(g>F_{m}+1 \)и \(R_{0}>F_{m}\). Из данного неравенства получается, что \(f=Q_{0}\times{g}+R_{0}>=g+R_{0}>=F_{m}+1+F_{m}=F_{m}+2.\)

Примечание 2

Такое доказательство выполнил в середине 19 века ученым Г. Ламе. Это основной компонент теории сложности вычислений. Такова его формулировка: в процессе поиска НОД f и g в итоге деления в определенным остатком количество действий, согласно алгоритму Евклида, не превышает 5.  

Значимость алгоритма Евклида

Для этого типа алгоритма находят большое количество вариантов использования, причем как со стороны теории, так и со стороны практики. Более того, данный алгоритм служит базой для криптографии, используют часто в области электронных продаж. Также применяют его в процессе нахождения значений линейных диофантовых уравнений, в процессе конструирования непрерывных дробей, а также при использовании способа Штурма.

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

Расширенный алгоритм Евклида обладает удостоверяющим характером, потому что наибольший общий делитель — единственное значение, которое может подходить выражению и разделять числа. При помощи алгоритма возможно просто рассчитывать частные от разделения диады a и b на их НОД.  

Использование в рамках математики

Один из вариантом использования алгоритма Евклида можно считать соотношение Безу (тождество или Леме). Сущность соотношения Безу состоит в показе наибольшего общего делителя в виде линейной сочетания с определенными значениями целого вида. Существует такая дефиниция: в случае целых чисел f и g (одно из чисел не должно быть эквивалентно нулю) бывают определенные показатели целого вида, для которых будет объективным отношение \(НОД (f,g) = m\times{f}+n\times{g}\), при котором m и n являются показателями Безу.   

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

Примеры решения задач с алгоритмом Евклида

Задача 1

Необходимо рассчитать наибольший общий делитель для 8 и 24.

Решение

Из-за того, что число 24 возможно поделить на 8, а число 8 возможно поделить также на 8, получается, что число 8 является общим делителем данных величин. Данный делитель можно считать самым большим, из-за того, что число 8 не способно поделиться на число, которое больше 8. Из-за этого НОД (24, 8) = 8.

В иных случаях для того, чтобы найти НОД диады необходимо подобный алгоритм использовать:

  1. То число, которое больше, необходимо разделить на число, которое меньше.
  2. Число, которое меньше, необходимо разделить на остаток результата деления.
  3. Первичный остаток необходимо разделить на второй остаток.
  4. Второй остаток необходимо разделить на третий и остаток.
  5. Так производить деление до момента, когда в остатке будет ноль. НОД — последняя величина, на которую можно было бы разделить число.

Ответ: 8.

Задача 2

Необходимо найти НОД диады 140 и 96. Решение данной задачи:

  1. \(\frac{140}{96}=1\). Остаток из данного уравнения — 44.
  2. \(\frac{96}{44}=2\). Остаток из данного уравнения — 8.
  3. \(\frac{44}{8}=5\). Остаток из данного уравнения — 4.
  4. \(\frac{8}{4}=2.\)

В результате деления последний делитель = 4. Таким образом НОД (140, 96) = 4.

Ответ: НОД (140, 96) = 4.

Представляем решение данного уравнения методом «столбика»:

blobid1650116667576.png
Источник: cleverstudents.ru

Для того, чтобы найти НОД трех (и более) чисел, используем такой алгоритм:

  1. Необходимо найти НОД любых двух значений.
  2. Необходимо найти НОД итогового делителя из первого пункта и третьего значения.
  3. Необходимо найти НОД итогового делителя и четвертого значения, так до последнего делителя.

Насколько полезной была для вас статья?

Рейтинг: 3.00 (Голосов: 2)

Заметили ошибку?

Выделите текст и нажмите одновременно клавиши «Ctrl» и «Enter»