Skip to content

Commit d49e82b

Browse files
ArunKishoreVoletipre-commit-ci[bot]cclauss
authored
Add function to check deficient numbers (#13528)
* 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. * updating DIRECTORY.md * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update deficient_numbers.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update deficient_numbers.py Fixed code issue * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * updating DIRECTORY.md * Add docstring for deficient number explanation Added a docstring explaining deficient numbers and provided examples. --------- Co-authored-by: ArunKishoreVoleti <ArunKishoreVoleti@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: cclauss <cclauss@users.noreply.github.com>
1 parent 378f30c commit d49e82b

2 files changed

Lines changed: 61 additions & 0 deletions

File tree

DIRECTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,6 +888,7 @@
888888
* [Bell Numbers](maths/special_numbers/bell_numbers.py)
889889
* [Carmichael Number](maths/special_numbers/carmichael_number.py)
890890
* [Catalan Number](maths/special_numbers/catalan_number.py)
891+
* [Deficient Numbers](maths/special_numbers/deficient_numbers.py)
891892
* [Disarum Number](maths/special_numbers/disarum_number.py)
892893
* [Hamming Numbers](maths/special_numbers/hamming_numbers.py)
893894
* [Happy Number](maths/special_numbers/happy_number.py)
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""
2+
A number n is said to be a Deficient number if
3+
the sum of its proper divisors is less than the number itself.
4+
5+
Examples of Deficient Numbers: 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, ...
6+
7+
https://en.wikipedia.org/wiki/Deficient_number
8+
"""
9+
10+
11+
def is_deficient_number(number: int) -> bool:
12+
"""
13+
This function takes an integer number as input.
14+
Returns True if the number is a deficient number.
15+
16+
>>> is_deficient_number(-1)
17+
False
18+
>>> is_deficient_number(0)
19+
False
20+
>>> is_deficient_number(1)
21+
True
22+
>>> is_deficient_number(2)
23+
True
24+
>>> is_deficient_number(6)
25+
False
26+
>>> is_deficient_number(12)
27+
False
28+
>>> is_deficient_number(7)
29+
True
30+
>>> is_deficient_number(28)
31+
False
32+
>>> is_deficient_number(15)
33+
True
34+
>>> is_deficient_number(8.0)
35+
Traceback (most recent call last):
36+
...
37+
TypeError: Input value of [number=8.0] must be an integer
38+
"""
39+
40+
if not isinstance(number, int):
41+
msg = f"Input value of [number={number}] must be an integer"
42+
raise TypeError(msg)
43+
if number < 1:
44+
return False
45+
if number == 1:
46+
return True
47+
48+
divisor_sum = 1
49+
for i in range(2, int(number**0.5) + 1):
50+
if number % i == 0:
51+
divisor_sum += i
52+
if i != number // i:
53+
divisor_sum += number // i
54+
return divisor_sum < number
55+
56+
57+
if __name__ == "__main__":
58+
import doctest
59+
60+
doctest.testmod()

0 commit comments

Comments
 (0)