File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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 ()
You can’t perform that action at this time.
0 commit comments