From 9d7733f0e44d1aa84d8241e07a2fdfd8e17ca589 Mon Sep 17 00:00:00 2001 From: CharlesCNorton <135471798+CharlesCNorton@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:19:08 -0400 Subject: [PATCH] Fix ZeroDivisionError on zero operands in least_common_multiple least_common_multiple_slow raised ZeroDivisionError for a zero operand (0 % n in the loop guard), e.g. least_common_multiple_slow(0, 5), and least_common_multiple_fast raised it for (0, 0) via floor-division by gcd(0, 0) == 0. The least common multiple is 0 whenever an operand is 0 (consistent with math.lcm), so both functions return 0 in that case. Adds doctests covering the zero inputs. --- maths/least_common_multiple.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/maths/least_common_multiple.py b/maths/least_common_multiple.py index a5c4bf8e3625..5e4f03988333 100644 --- a/maths/least_common_multiple.py +++ b/maths/least_common_multiple.py @@ -14,7 +14,15 @@ def least_common_multiple_slow(first_num: int, second_num: int) -> int: 10 >>> least_common_multiple_slow(12, 76) 228 + >>> least_common_multiple_slow(0, 5) + 0 + >>> least_common_multiple_slow(5, 0) + 0 + >>> least_common_multiple_slow(0, 0) + 0 """ + if first_num == 0 or second_num == 0: + return 0 max_num = first_num if first_num >= second_num else second_num common_mult = max_num while (common_mult % first_num > 0) or (common_mult % second_num > 0): @@ -30,7 +38,15 @@ def least_common_multiple_fast(first_num: int, second_num: int) -> int: 10 >>> least_common_multiple_fast(12,76) 228 + >>> least_common_multiple_fast(0, 5) + 0 + >>> least_common_multiple_fast(5, 0) + 0 + >>> least_common_multiple_fast(0, 0) + 0 """ + if first_num == 0 or second_num == 0: + return 0 return first_num // greatest_common_divisor(first_num, second_num) * second_num