From 36e88d61340a30e886daa667ef420f0874f83d25 Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:31:54 +0000 Subject: [PATCH] [Sync Iteration] python/perfect-numbers/1 --- .../perfect-numbers/1/perfect_numbers.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 solutions/python/perfect-numbers/1/perfect_numbers.py diff --git a/solutions/python/perfect-numbers/1/perfect_numbers.py b/solutions/python/perfect-numbers/1/perfect_numbers.py new file mode 100644 index 0000000..e8a3879 --- /dev/null +++ b/solutions/python/perfect-numbers/1/perfect_numbers.py @@ -0,0 +1,26 @@ +""" +Determine if a number is perfect, abundant, or deficient based on +Nicomachus' (60 - 120 CE) classification scheme for positive integers. +""" + + +def classify(number: int) -> str: + """ + A perfect number equals the sum of its positive divisors. + + :param number: int a positive integer + :return: str the classification of the input integer + """ + if number < 1: + raise ValueError( + "Classification is only possible for positive integers." + ) + + total_divisors: int = sum(i for i in range(1, number) if number % i == 0) + + if total_divisors == number: + return "perfect" + if number < total_divisors: + return "abundant" + + return "deficient"