Алгоритъм на Евклид
от Уикипедия, свободната енциклопедия
Алгоритъмът на Евклид е алгоритъм за намиране на най-големия общ делител (НОД) на две естествени числа. Той е един от първите публикувани алгоритми. Описан е в книгата на Евклид „Елементи“ около 300 г. пр.н.е.
Съдържание |
Теория [редактиране]
Нека
и
са естествени числа и редицата
е определена така, че всяко
е остатък от делението на пред-предния член на предния член, т. е.
Тогава
- най-големият общ делител на
и
, е равен на
- последния ненулев член на редицата.
Верността на алгоритъма следва от съжденията:
- Нека
, тогава 
за всяко ненулево 
Запис с думи [редактиране]
- Взимайки двете дадени на входа на алгоритъма числа a и b, провери дали b е равно на 0.
- Ако да, числото a е търсеният най-голям общ делител.
- Ако не, повтори процеса, като използваш за входни данни b и остатъка, получен при деленето a на b (означаван по-долу с a mod b)
Рекурсивен запис [редактиране]
Пример на езика C (операторът x % y изчислява остатъка при деление x на y).
int gcd(int x, int y)
{
if (y == 0)
return x;
else
return gcd(y, x % y);
}
Процедурен запис [редактиране]
function gcd(a, b){
while b!= 0;
var t := b;
b := a mod b;
a := t;
return a;
}
Без използване на деление [редактиране]
function gcd(a, b)
while a ≠ b
if a > b
a := a - b
else
b := b - a
return a
Пример [редактиране]
Най-големият общ делител на числата 1071 и 1029 се пресмята по следния начин:
Следователно търсеният делител е 21.
Виж още [редактиране]






, тогава 
за всяко ненулево 


