Наибольший общий делитель двух натуральных чисел $a$ и $b$ — $\gcd(a, b)$ — есть наибольшее число, на которое числа $a$ и $b$ делятся без остатка.
Для нахождения $\gcd(a, b)$ можно поступить следующим естественным образом. Разложим оба числа по степеням простых чисел: $a = 2^{\alpha_1} \cdot 3^{\alpha_2} \cdot \ldots \cdot p^{\alpha_n}_n$, $b = 2^{\beta_1} \cdot 3^{\beta_2} \cdot \ldots \cdot p^{\beta_n}_n$ ($\alpha_k$ и $\beta_k$ могут быть равны нулю). Тогда
$\gcd(a, b) =$ $2^{\min(\alpha_1, \beta_1)} \cdot 3^{\min(\alpha_2, \beta_2)} \cdot \ldots \cdot p^{\min(\alpha_n, \beta_n)}_n$.
Например, для нахождения наибольшего общего делителя $2625$ и $8100$ получим: $2625 = 2^0 \cdot 3^1 \cdot 5^3 \cdot 7^1$, $8100 = 2^2 \cdot 3^4 \cdot 5^2 \cdot 7^0$, значит
$\gcd(2625, 8100) =$ $2^0 \cdot 3^1 \cdot 5^2 \cdot 7^0 = 75$.
Существенный недостаток этого способа в том, что разложить большое число на простые множители не так просто, а точнее — не так быстро.
Евклид в VII книге «Начал» описывает алгоритм нахождения «общей меры двух чисел». Алгоритм описан геометрически, как нахождение общей меры двух отрезков. Он сводится к «последовательному отнятию» от большего отрезка меньшего отрезка. Теперь этот алгоритм известен как алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел.
Основная идея, на которой основан алгоритм, состоит в том, что НОД чисел $a$ и $b$ равен НОД чисел $b$ и $a-b$. Отсюда следуют, что если поделить $a$ на $b$ с остатком, т. е. представить в виде $a = b \cdot q + r$, то $\gcd(a, b) = $ $\gcd(b, r)$.
Опишем красивую геометрическую интерпретацию алгоритма, интерактивная реализация которой предложена выше.
В прямоугольнике с длинами сторон $a$ и $b$ закрашиваем максимально возможный квадрат. В оставшемся прямоугольнике снова закрашиваем максимально возможный квадрат. И так далее до тех пор, пока весь исходный прямоугольник не будет закрашен. Длина стороны самого маленького квадрата и будет равна $\gcd(a, b)$.
Более подробно геометрическая интерпретация описана ниже, а параллельно приведено арифметическое описание алгоритма Евклида.
Алгоритм Евклида является мощным инструментом, используемым при решении различных задач. Например, он используется для решения уравнений в целых числах, представления чисел в виде непрерывных (цепных) дробей, его можно обобщить для нахождения наибольшего общего делителя двух многочленов.