Пишем решение с тестами: наибольший общий делитель

View Full Gallery
View Full Gallery

Curated gallery | 1 image

Gallery image

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

Задача

Найти НОД двух натуральных чисел a и b — классическая задача школьной математики и один из древнейших алгоритмов.

Решение

⎗
✓
1
2
3
4
5
6
def gcd(a: int, b: int) -> int:
    while b:
        a, b = b, a % b
    return a

print(gcd(48, 18))

Как это работает

Алгоритм Евклида: НОД(a, b) = НОД(b, a mod b). Остаток всегда меньше делителя, поэтому числа быстро уменьшаются: (48, 18) → (18, 12) → (12, 6) → (6, 0).

Пример работы

⎗
✓
6

Сложность

O(log min(a, b)) по времени, O(1) по памяти.

Проверка тестами…

Open the original article


Related:

Edit

Pub: 01 Nov 2026 23:41 UTC

Views: 6