Разместить заказ
Вы будете перенаправлены на Автор24

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

8-800-775-03-30 support@author24.ru
Статья предоставлена специалистами сервиса Автор24
Автор24 - это сообщество учителей и преподавателей, к которым можно обратиться за помощью с выполнением учебных работ.
как работает сервис
Все предметы / Математика / Алгоритм Евклида
Алгоритм Евклида

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

Определение 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$.