MCPcopy Index your code
hub / github.com/TheAlgorithms/Python / is_happy_number

Function is_happy_number

maths/special_numbers/happy_number.py:1–42  ·  view source on GitHub ↗

A happy number is a number which eventually reaches 1 when replaced by the sum of the square of each digit. :param number: The number to check for happiness. :return: True if the number is a happy number, False otherwise. >>> is_happy_number(19) True >>> is_ha

(number: int)

Source from the content-addressed store, hash-verified

1def is_happy_number(number: int) -> bool:
2 """
3 A happy number is a number which eventually reaches 1 when replaced by the sum of
4 the square of each digit.
5
6 :param number: The number to check for happiness.
7 :return: True if the number is a happy number, False otherwise.
8
9 >>> is_happy_number(19)
10 True
11 >>> is_happy_number(2)
12 False
13 >>> is_happy_number(23)
14 True
15 >>> is_happy_number(1)
16 True
17 >>> is_happy_number(0)
18 Traceback (most recent call last):
19 ...
20 ValueError: number=0 must be a positive integer
21 >>> is_happy_number(-19)
22 Traceback (most recent call last):
23 ...
24 ValueError: number=-19 must be a positive integer
25 >>> is_happy_number(19.1)
26 Traceback (most recent call last):
27 ...
28 ValueError: number=19.1 must be a positive integer
29 >>> is_happy_number("happy")
30 Traceback (most recent call last):
31 ...
32 ValueError: number='happy' must be a positive integer
33 """
34 if not isinstance(number, int) or number <= 0:
35 msg = f"{number=} must be a positive integer"
36 raise ValueError(msg)
37
38 seen = set()
39 while number != 1 and number not in seen:
40 seen.add(number)
41 number = sum(int(digit) ** 2 for digit in str(number))
42 return number == 1
43
44
45if __name__ == "__main__":

Callers

nothing calls this directly

Calls 1

addMethod · 0.45

Tested by

no test coverage detected