Skip to content

Commit fb83b13

Browse files
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.
1 parent 3cea941 commit fb83b13

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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+
8+
def is_deficient_number(number: int) -> bool:
9+
"""
10+
This function takes an integer number as input.
11+
Returns True if the number is a deficient number.
12+
13+
>>> is_deficient_number(-1)
14+
False
15+
>>> is_deficient_number(0)
16+
False
17+
>>> is_deficient_number(1)
18+
True
19+
>>> is_deficient_number(2)
20+
True
21+
>>> is_deficient_number(6)
22+
False
23+
>>> is_deficient_number(12)
24+
False
25+
>>> is_deficient_number(7)
26+
True
27+
>>> is_deficient_number(28)
28+
False
29+
>>> is_deficient_number(15)
30+
True
31+
>>> is_deficient_number(8.0)
32+
Traceback (most recent call last):
33+
...
34+
TypeError: Input value of [number=8.0] must be an integer
35+
"""
36+
if not isinstance(number, int):
37+
msg = f"Input value of [number={number}] must be an integer"
38+
raise TypeError(msg)
39+
if number < 1:
40+
return False
41+
42+
divisor_sum = 1 # 1 is always a proper divisor
43+
for i in range(2, int(number ** 0.5) + 1):
44+
if number % i == 0:
45+
divisor_sum += i
46+
if i != number // i:
47+
divisor_sum += number // i
48+
return divisor_sum < number
49+
50+
if __name__ == "__main__":
51+
import doctest
52+
doctest.testmod()

0 commit comments

Comments
 (0)