Типичные ошибки при решении: наибольший общий делитель
Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.
Задача
Найти НОД двух натуральных чисел a и b — классическая задача школьной математики и один из древнейших алгоритмов.
Решение
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) по памяти.
Частые ошибки
1. Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается. 2. Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов. 3. Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Заметив такую ошибку в чужом коде, вы уже мыслите как ревьюер.
---
Related: fc2 無料 動画 ランキング — pavelb90.wixsite.com/my-site-1/post/fc2-%E7%84%A1%E6%96%99-%E5%8B%95%E7%94%BB-%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0; Разбираем задачу: вычисление факториала — worknotesx4zb41.notepin.co/factorial-razbor; سكس بابا وماما - فيديوهات إباحية نادرة ومثيرة — blogfreely.net/nathannazarov26/sks-bb-wmm-fydywht-bhy-ndr-wmthyr; Разбираем задачу: сортировка слиянием — worknotesx4zb41.notepin.co/merge-sort-razbor; Ловушки новичков при решении: сортировка пузырьком — workshopeb1353.notepin.co/bubble-sort-oshibki; leonienpur — paste2.org/CEMhC6n0; üvey annesini zorla sikiyor — sway.cloud.microsoft/bnej00Ru7aRXhJ0D; لحس رجلين — hey.xyz/posts/201fbn229f90cdnbc0r; black money wallpaper — paste2.org/t933dk1x; Zincubis Adult Art Gallery – Gothic Tentacles & Femboy Art — articlescad.com/zincubis-adult-art-gallery-gothic-tentacles-femboy-art-411721.html