Skip to content

Commit d0969eb

Browse files
docs(maths): Add comprehensive doctests for perfect_number
1 parent c3d4b9e commit d0969eb

File tree

1 file changed

+21
-78
lines changed

1 file changed

+21
-78
lines changed
Lines changed: 21 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,22 @@
11
"""
2-
== Perfect Number ==
3-
In number theory, a perfect number is a positive integer that is equal to the sum of
4-
its positive divisors, excluding the number itself.
5-
For example: 6 ==> divisors[1, 2, 3, 6]
6-
Excluding 6, the sum(divisors) is 1 + 2 + 3 = 6
7-
So, 6 is a Perfect Number
8-
9-
Other examples of Perfect Numbers: 28, 486, ...
10-
11-
https://en.wikipedia.org/wiki/Perfect_number
12-
"""
13-
14-
15-
def perfect(number: int) -> bool:
16-
"""
17-
Check if a number is a perfect number.
18-
19-
A perfect number is a positive integer that is equal to the sum of its proper
20-
divisors (excluding itself).
21-
22-
Args:
23-
number: The number to be checked.
24-
25-
Returns:
26-
True if the number is a perfect number, False otherwise.
27-
28-
Start from 1 because dividing by 0 will raise ZeroDivisionError.
29-
A number at most can be divisible by the half of the number except the number
30-
itself. For example, 6 is at most can be divisible by 3 except by 6 itself.
31-
32-
Examples:
33-
>>> perfect(27)
34-
False
35-
>>> perfect(28)
36-
True
37-
>>> perfect(29)
38-
False
39-
>>> perfect(6)
40-
True
41-
>>> perfect(12)
42-
False
43-
>>> perfect(496)
44-
True
45-
>>> perfect(8128)
46-
True
47-
>>> perfect(0)
48-
False
49-
>>> perfect(-1)
50-
False
51-
>>> perfect(12.34)
52-
Traceback (most recent call last):
53-
...
54-
ValueError: number must be an integer
55-
>>> perfect("Hello")
56-
Traceback (most recent call last):
57-
...
58-
ValueError: number must be an integer
59-
"""
60-
if not isinstance(number, int):
61-
raise ValueError("number must be an integer")
62-
if number <= 0:
63-
return False
64-
return sum(i for i in range(1, number // 2 + 1) if number % i == 0) == number
65-
66-
67-
if __name__ == "__main__":
68-
from doctest import testmod
69-
70-
testmod()
71-
print("Program to check whether a number is a Perfect number or not...")
72-
try:
73-
number = int(input("Enter a positive integer: ").strip())
74-
except ValueError:
75-
msg = "number must be an integer"
76-
print(msg)
77-
raise ValueError(msg)
78-
79-
print(f"{number} is {'' if perfect(number) else 'not '}a Perfect Number.")
2+
Determine if a number is a perfect number.
3+
A perfect number is a positive integer that is equal to the sum of its
4+
proper positive divisors.
5+
6+
More info: https://en.wikipedia.org/wiki/Perfect_number
7+
8+
>>> is_perfect(6)
9+
True
10+
>>> is_perfect(28)
11+
True
12+
>>> is_perfect(496)
13+
True
14+
>>> is_perfect(10)
15+
False
16+
>>> is_perfect(1)
17+
False
18+
>>> is_perfect(0)
19+
False
20+
>>> is_perfect(-6)
21+
False
22+
"""

0 commit comments

Comments
 (0)