Skip to content

Commit 519b1dd

Browse files
committed
(Feature)Add magic numberber in maths-special_numbers
1 parent 791deb4 commit 519b1dd

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""
2+
== Magic Number ==
3+
A number where the recursive sum of digits eventually results in 1.
4+
Example: (172) ((1+7+2=10 -> 1+0=1)).
5+
https://www.scribd.com/document/895653665/Interesting-Number-Programs
6+
"""
7+
8+
9+
def is_magic_number(number: int) -> bool:
10+
"""
11+
This functions takes an integer number as input.
12+
returns True if the number is magic.
13+
>>> is_magic_number(-1)
14+
False
15+
>>> is_magic_number(0)
16+
False
17+
>>> is_magic_number(172)
18+
True
19+
>>> is_magic_number(19)
20+
True
21+
>>> is_magic_number(124)
22+
False
23+
>>> is_magic_number(5.0)
24+
Traceback (most recent call last):
25+
...
26+
TypeError: Input value of [number=5.0] must be an integer
27+
"""
28+
if not isinstance(number, int):
29+
msg = f"Input value of [number={number}] must be an integer"
30+
raise TypeError(msg)
31+
if number <= 0:
32+
return False
33+
# the loop continues if n is 0
34+
# and sum is non-zero.
35+
# It stops when n becomes
36+
# 0 and sum becomes single digit.
37+
sum = 0
38+
while (number > 0 or sum > 9):
39+
if (number == 0):
40+
number = sum
41+
sum = 0
42+
sum = sum + number % 10
43+
number = number // 10
44+
45+
# Return true if sum becomes 1.
46+
return sum == 1
47+
48+
if __name__ == "__main__":
49+
import doctest
50+
51+
doctest.testmod()

0 commit comments

Comments
 (0)