Алгоритм Евклида (отыскания НОД 2-х чисел)


Пусть a>b. Тогда в силу теоремы делимости находим ряд равенств:

a=bq1+r1, 0<r1<b

b=r1q2+r2, 0<r2<r1

r1=r2q3+r3, 0<r3<r2

...…………………

rn-2=rn-1qn+rn, 0<rn<rn-1

rn1=rnqn+1.

Получение последнего равенства (то есть равенства с разложением без остатка) неизбежно, т.к. ряд b, r1, r2, …. – ряд убывающих целых чисел, который не может содержать более b положительных чисел, а значит рано или поздно в этом ряду возникнет «0».

Видим, что общие делители a и b, b и r1, r1 и r2,..., rn–1 и rn совпадают с делителями числа rn (a,b)=(b,r1)=(r1,r2)=…=(rn-1,rn)= rn.

Таким образом, (a,b)=rn.

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

Реализация алгоритма Евклида (вариант алгоритма с вычитанием)

Вход: a, b>0.

1.Если a>b Шаг 3

если a<b Шаг 2

если a=b Шаг 5 (выход)

2.Меняем местами a и b.

3.a:=ab

4.Возвращаемся на Шаг 1.

5. Выход: a – НОД

 

Ниже приведен пример использования этой реализации алгоритма.

Пример

a=603, b=108

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

a
b

 

Ответ: НОД(603,108)=9.

 

Реализация алгоритма Евклида (вариант алгоритма с делением с остатком)


Вход: a, b >0.

1. Находим разложение a=bq+r, 0≤r<b

2. если r=0 Шаг 5 (выход)

3. a:=b; b:=r.

4. Возвращаемся на Шаг 1

5. Выход: b – НОД.

 

Пример

a=603, b=108

a
b

603=5·108+63

108=1·63+45

63=1∙45+27

45=1∙27+18

27=1∙18+9

18=2∙9+0

 

Ответ: НОД(603,108)=9.

 



Дата добавления: 2018-11-26; просмотров: 758;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.