Справочник от Автор24
Нужна помощь?
Найдем эксперта за 5 минут
Подобрать эксперта
+2

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

Срочно нужна работа?
Мы готовы помочь!
Найти эксперта

Существуют разные способы поиска НОД. Одним из наиболее эффективных из них является алгоритм Евклида для вычисления наибольшего общего делителя. Рассмотрим его подробнее.

Определение 1

Алгоритм Евклида для нахождения НОД — это последовательное деление с остатком.

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

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

Пусть даны два числа a=$f_0$ и $b=f_1$, причём $f_0≥f_1$ и оба этих числа не равны нулю. Тогда если предположить, что $f_1$ равно нулю, то НОД этих двух чисел будет равен $f_0$. Рассмотрим теперь случай, когда $f_1$ не равно нулю. В этом случае остаток от деления $f_0$ на $f_1$ пусть будет $f_2$, тогда справедливо равенство:

$НОД(f_0, f_1)= НОД(f_1, f_2)$

Пусть $a$ будет частным от деления $f$ на $g$, тогда при любом целом $a$, числа $f_0$ и $f_1$ имеют те же общие делители, что и числа $f_1$ и $f_2=(f_0-a\cdot f_1)$.

Замечание 1

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

Цепочку вычисления НОД с помощью алгоритма Евклида можно записать так:

$f_0=a_1 \cdot f_1 + f_2$;

$f_1=a_2 \cdot f_2 + f_3$;

$...$

$f_n=a_n \cdot f_{n+1} + f_{n+2}$.

Вычисления продолжаются до тех пор пока остаток $f_{n+2}$ не станет равным нулю, тогда за НОД принимается $f_{n+1}$.

Определение 2

Каждое последовательное вычисление нового остатка называется итерацией.

Алгоритм Евклида: блок-схема. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Алгоритм Евклида: блок-схема. Автор24 — интернет-биржа студенческих работ

Рассмотрим пример на получение НОД через алгоритм Евклида.

Пример 1

Осуществите вычисление НОД с помощью алгоритма Евклида для пары $(39; 15)$

При вычислении НОД получаем последовательно пары чисел:

$НОД(39;15)$;

$НОД(15;9)$;

$НОД(9;6)$;

$НОД(6;3)$;

$НОД(3;0)$ — последняя пара является конечной, так как остаток равен нулю. Значит, наибольшим общим делителем для чисел $39$ и $15$ является число $3$.

Алгоритм Евклида: доказательство

Докажем корректность алгоритма Евклида с помощью двух этапов.

Сначала рассмотрим последний остаток $f_{n-1}$, не равный нулю.

Этот остаток является делителем обоих чисел $a$ и $b$. Так как этот остаток является общим делителем, то он должен быть меньше или равен некоторому $НОД=g$.

Для того чтобы показать, что $f_{n-1}$ является делителем $a$ и $b$, запишем предыдущий остаток через $f_{n-1}$:

$f_{n-2}=q_{n}f_{n-1}$;

Так как последний остаток $f_{n-1}=0$, то$ f_{n-1}$ также должен быть делителем $f_{n-3}$:

$f_{n-3}=q_{n-1}f_{n-2}+f_{n-1}$, так как он является делителем обоих слагаемых в правой части равенства.

Проведя последующие итерации, получается, что $f_{n-1}$ является делителем всех предыдущих остатков, включая $a$ и $b$.

При этом ни один из предыдущих остатков не является делителем $a$ и $b$, так как деление на них происходит с остатком.

Поэтому $f_{n-1}$ является общим делителем $a$ и $b$, при этом меньшим, либо равным $g$.

На втором этапе показываем, что любой общий делитель $a$ и $b$, в том числе и $g$, должен делиться на $f_{n-1}$.

Возьмём любое число $c$, являющееся делителем $a$ и $b$, также оно должно быть делителем любого получающегося остатка $f_k$.

Соответственно, числа $a$ и $b$ можно представить как $a=mc$ и $b=lc$, причём $l, m$ — натуральные числа.

Получается, что $c$ является делителем $f_1$, так как $f_1=a-q_0lc=(m-q_0l)c$.

Используя аналогичные рассуждения, можно доказать, что $c$ является делителем всех остатков.

Таким образом, получается, что $НОД=g$ должен быть делителем $f_{n-1}$, что значит, что $g≤f_{n-1}$.

Также $g$ должен быть меньше или равен $r_{n-1}$. Это и предыдущее заключение что $f_{n-1}≤g$ противоречат друг другу во всех случаях, кроме $f{n-1}=g$, следовательно, $g=f_{n-1}$.

То есть $f_{n-1}$ является НОД, полученным через алгоритм Евклида.

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

Расширенный алгоритм Евклида рассматривает НОД через линейную комбинацию этих чисел с некоторыми целыми коэффициентами.

Здесь остатки вычисляются по следующим формулам:

$r_1=a-bq_0$;

$r_2=b-r_1q_1=b-(a-bq_0)q_1=b(1+q_0q_1)-aq_1$.

$r_n=r_{n-2}-r_{n-1}q_{n-1}=...ax+by$.

Дата последнего обновления статьи: 29.03.2025