From fb83b131b2e431e8ea4db11f26156d260ccd7d7c Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:41:03 +0530 Subject: [PATCH 1/9] Add function to check deficient numbers Introduces is_deficient_number to determine if a number is deficient by comparing the sum of its proper divisors to the number itself. Includes input validation and doctests for correctness. --- maths/special_numbers/deficient_numbers.py | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 maths/special_numbers/deficient_numbers.py diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py new file mode 100644 index 000000000000..1dc7d68d5d27 --- /dev/null +++ b/maths/special_numbers/deficient_numbers.py @@ -0,0 +1,52 @@ +""" +A number n is said to be a Deficient number if +the sum of its proper divisors is less than the number itself. + +Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ... +""" + +def is_deficient_number(number: int) -> bool: + """ + This function takes an integer number as input. + Returns True if the number is a deficient number. + + >>> is_deficient_number(-1) + False + >>> is_deficient_number(0) + False + >>> is_deficient_number(1) + True + >>> is_deficient_number(2) + True + >>> is_deficient_number(6) + False + >>> is_deficient_number(12) + False + >>> is_deficient_number(7) + True + >>> is_deficient_number(28) + False + >>> is_deficient_number(15) + True + >>> is_deficient_number(8.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=8.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 f93083762386734f184978c0d31718f34f4befc8 Mon Sep 17 00:00:00 2001 From: ArunKishoreVoleti Date: Thu, 16 Oct 2025 10:11:26 +0000 Subject: [PATCH 2/9] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 0f9859577493..8a79bef01d63 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -777,6 +777,7 @@ * [Bell Numbers](maths/special_numbers/bell_numbers.py) * [Carmichael Number](maths/special_numbers/carmichael_number.py) * [Catalan Number](maths/special_numbers/catalan_number.py) + * [Deficient Numbers](maths/special_numbers/deficient_numbers.py) * [Hamming Numbers](maths/special_numbers/hamming_numbers.py) * [Happy Number](maths/special_numbers/happy_number.py) * [Harshad Numbers](maths/special_numbers/harshad_numbers.py) From 0c51c32c7a4acb6b5c486b4cbad9213aab33fe74 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:12:09 +0000 Subject: [PATCH 3/9] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/deficient_numbers.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index 1dc7d68d5d27..69f54c3acd5d 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -5,6 +5,7 @@ Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ... """ + def is_deficient_number(number: int) -> bool: """ This function takes an integer number as input. @@ -40,13 +41,15 @@ def is_deficient_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 + doctest.testmod() From 4be218d73a81a670fd9eb707d0f8f0e6d0b20511 Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 18:28:39 +0530 Subject: [PATCH 4/9] Update deficient_numbers.py --- maths/special_numbers/deficient_numbers.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index 69f54c3acd5d..47f923fef6a3 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -5,7 +5,6 @@ Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ... """ - def is_deficient_number(number: int) -> bool: """ This function takes an integer number as input. @@ -34,13 +33,14 @@ def is_deficient_number(number: int) -> bool: ... TypeError: Input value of [number=8.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 + divisor_sum = 1 for i in range(2, int(number**0.5) + 1): if number % i == 0: divisor_sum += i @@ -48,8 +48,6 @@ def is_deficient_number(number: int) -> bool: divisor_sum += number // i return divisor_sum < number - if __name__ == "__main__": import doctest - doctest.testmod() From d6f90b5160334d5d015c369c99cd1d23867e3fd5 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 12:59:51 +0000 Subject: [PATCH 5/9] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/deficient_numbers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index 47f923fef6a3..71c59d582c47 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -5,6 +5,7 @@ Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ... """ + def is_deficient_number(number: int) -> bool: """ This function takes an integer number as input. @@ -48,6 +49,8 @@ def is_deficient_number(number: int) -> bool: divisor_sum += number // i return divisor_sum < number + if __name__ == "__main__": import doctest + doctest.testmod() From 20875e901e7a2a62e3e0b742c8150cfe1c2fdbf5 Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 18:54:10 +0530 Subject: [PATCH 6/9] Update deficient_numbers.py Fixed code issue --- maths/special_numbers/deficient_numbers.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index 47f923fef6a3..e82021946d5c 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -39,6 +39,8 @@ def is_deficient_number(number: int) -> bool: raise TypeError(msg) if number < 1: return False + if number == 1: + return True divisor_sum = 1 for i in range(2, int(number**0.5) + 1): @@ -50,4 +52,4 @@ def is_deficient_number(number: int) -> bool: if __name__ == "__main__": import doctest - doctest.testmod() + doctest.testmod() \ No newline at end of file From 46f0df352528ed78efa4f9d898703735153c65dd 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 13:26:34 +0000 Subject: [PATCH 7/9] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/deficient_numbers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index 629a0e9f5cf1..fc53fc2de16c 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -55,4 +55,4 @@ def is_deficient_number(number: int) -> bool: if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod() From 90c87e7def0b31aec0529411fc8ce9b2dc7a0e05 Mon Sep 17 00:00:00 2001 From: cclauss Date: Mon, 14 Sep 2026 04:07:46 +0000 Subject: [PATCH 8/9] updating DIRECTORY.md --- DIRECTORY.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index c34a6862afc5..636155a735ef 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -522,6 +522,7 @@ ## [Fractals](fractals) * [Barnsley Fern](fractals/barnsley_fern.py) + * [Hilbert Curve](fractals/hilbert_curve.py) * [Julia Sets](fractals/julia_sets.py) * [Koch Snowflake](fractals/koch_snowflake.py) * [Mandelbrot](fractals/mandelbrot.py) @@ -699,7 +700,7 @@ * [Gradient Descent](machine_learning/gradient_descent.py) * [K Means Clust](machine_learning/k_means_clust.py) * [K Medoids](machine_learning/k_medoids.py) - * [K Nearest Neighbours](machine_learning/k_nearest_neighbours.py) + * [K Nearest Neighbors](machine_learning/k_nearest_neighbors.py) * [Linear Discriminant Analysis](machine_learning/linear_discriminant_analysis.py) * [Linear Regression](machine_learning/linear_regression.py) * [Linear Regression Vectorized](machine_learning/linear_regression_vectorized.py) @@ -710,9 +711,11 @@ * Lstm * [Lstm Prediction](machine_learning/lstm/lstm_prediction.py) * [Mfcc](machine_learning/mfcc.py) + * [Mini Batch Gradient Descent](machine_learning/mini_batch_gradient_descent.py) * [Multilayer Perceptron Classifier](machine_learning/multilayer_perceptron_classifier.py) * [Polynomial Regression](machine_learning/polynomial_regression.py) * [Principle Component Analysis](machine_learning/principle_component_analysis.py) + * [Q Learning](machine_learning/q_learning.py) * [Random Forest Classifier](machine_learning/random_forest_classifier.py) * [Random Forest Regressor](machine_learning/random_forest_regressor.py) * [Scoring Functions](machine_learning/scoring_functions.py) @@ -742,6 +745,7 @@ * [Binary Multiplication](maths/binary_multiplication.py) * [Binomial Coefficient](maths/binomial_coefficient.py) * [Binomial Distribution](maths/binomial_distribution.py) + * [Binomial Expansion](maths/binomial_expansion.py) * [Ceil](maths/ceil.py) * [Chebyshev Distance](maths/chebyshev_distance.py) * [Check Polygon](maths/check_polygon.py) @@ -784,6 +788,7 @@ * [Interquartile Range](maths/interquartile_range.py) * [Is Int Palindrome](maths/is_int_palindrome.py) * [Is Ip V4 Address Valid](maths/is_ip_v4_address_valid.py) + * [Is Ipv6 Address Valid](maths/is_ipv6_address_valid.py) * [Is Square Free](maths/is_square_free.py) * [Jaccard Similarity](maths/jaccard_similarity.py) * [Joint Probability Distribution](maths/joint_probability_distribution.py) From 06e444685acef26b773edb0f4ee8c08bcb666213 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 14 Sep 2026 06:14:14 +0200 Subject: [PATCH 9/9] Add docstring for deficient number explanation Added a docstring explaining deficient numbers and provided examples. --- maths/special_numbers/deficient_numbers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maths/special_numbers/deficient_numbers.py b/maths/special_numbers/deficient_numbers.py index fc53fc2de16c..36f2d6898338 100644 --- a/maths/special_numbers/deficient_numbers.py +++ b/maths/special_numbers/deficient_numbers.py @@ -3,6 +3,8 @@ the sum of its proper divisors is less than the number itself. Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ... + +https://en.wikipedia.org/wiki/Deficient_number """