From 8d3b579b04fc55ecf069b3a17cdd7937785a6eb7 Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:35:47 +0530 Subject: [PATCH 1/3] Add function to check abundant numbers Introduces is_abundant_number to determine if a number is abundant by checking if the sum of its proper divisors exceeds the number itself. Includes doctests and input validation. --- maths/special_numbers/abundant_numbers.py | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 maths/special_numbers/abundant_numbers.py diff --git a/maths/special_numbers/abundant_numbers.py b/maths/special_numbers/abundant_numbers.py new file mode 100644 index 000000000000..4e29d5055e54 --- /dev/null +++ b/maths/special_numbers/abundant_numbers.py @@ -0,0 +1,53 @@ +""" +A number n is said to be an Abundant number if +the sum of its proper divisors is greater than the number itself. + +Examples of Abundant Numbers: 12, 18, 20, 24, 30, 36, 40, 42, 48, 54, ... +""" + +def is_abundant_number(number: int) -> bool: + """ + This function takes an integer number as input. + Returns True if the number is an abundant number. + + >>> is_abundant_number(-1) + False + >>> is_abundant_number(0) + False + >>> is_abundant_number(12) + True + >>> is_abundant_number(18) + True + >>> is_abundant_number(28) + False + >>> is_abundant_number(20) + True + >>> is_abundant_number(6) + False + >>> is_abundant_number(1) + False + >>> is_abundant_number(945) + True + >>> is_abundant_number(28.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=28.0] must be an integer + """ + if not isinstance(number, int): + msg = f"Input value of [number={number}] must be an integer" + raise TypeError(msg) + if number < 1: + return False + + divisor_sum = 1 # 1 is always a proper divisor + for i in range(2, int(number ** 0.5) + 1): + if number % i == 0: + divisor_sum += i + if i != number // i: + divisor_sum += number // i + return divisor_sum > number + +if __name__ == "__main__": + import doctest + + doctest.testmod() From 7f210022c202339c834be3e304d84d52dbb59fda Mon Sep 17 00:00:00 2001 From: ArunKishoreVoleti Date: Thu, 16 Oct 2025 10:06:10 +0000 Subject: [PATCH 2/3] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 0f9859577493..911bd5023233 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -772,6 +772,7 @@ * [Solovay Strassen Primality Test](maths/solovay_strassen_primality_test.py) * [Spearman Rank Correlation Coefficient](maths/spearman_rank_correlation_coefficient.py) * Special Numbers + * [Abundant Numbers](maths/special_numbers/abundant_numbers.py) * [Armstrong Numbers](maths/special_numbers/armstrong_numbers.py) * [Automorphic Number](maths/special_numbers/automorphic_number.py) * [Bell Numbers](maths/special_numbers/bell_numbers.py) From a9ad4e7e5131b3d34d1afe5a9c11e26c4a661edb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:06:53 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/abundant_numbers.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maths/special_numbers/abundant_numbers.py b/maths/special_numbers/abundant_numbers.py index 4e29d5055e54..bde7ded2e869 100644 --- a/maths/special_numbers/abundant_numbers.py +++ b/maths/special_numbers/abundant_numbers.py @@ -5,11 +5,12 @@ Examples of Abundant Numbers: 12, 18, 20, 24, 30, 36, 40, 42, 48, 54, ... """ + def is_abundant_number(number: int) -> bool: """ This function takes an integer number as input. Returns True if the number is an abundant number. - + >>> is_abundant_number(-1) False >>> is_abundant_number(0) @@ -40,13 +41,14 @@ def is_abundant_number(number: int) -> bool: return False divisor_sum = 1 # 1 is always a proper divisor - for i in range(2, int(number ** 0.5) + 1): + for i in range(2, int(number**0.5) + 1): if number % i == 0: divisor_sum += i if i != number // i: divisor_sum += number // i return divisor_sum > number + if __name__ == "__main__": import doctest