From 9e1d83cb1c05d3ec7cb305319b6ec71cb404638b Mon Sep 17 00:00:00 2001 From: BhaktiVagadia Date: Thu, 7 May 2026 16:23:12 +0530 Subject: [PATCH 1/2] enahasment: add spy number in maths-special numbers --- maths/special_numbers/spy_number.py | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 maths/special_numbers/spy_number.py diff --git a/maths/special_numbers/spy_number.py b/maths/special_numbers/spy_number.py new file mode 100644 index 000000000000..502c775ba45d --- /dev/null +++ b/maths/special_numbers/spy_number.py @@ -0,0 +1,48 @@ +""" +== Spy Number == + spy number is defined as a positive integer where the + sum of its digits equals the product of its digits. + +Examples of Spy Numbers: 22,123,1124,... +https://www.scribd.com/document/895653665/Interesting-Number-Programs +""" +def is_spy_number(number: int) -> bool: + """ + This functions takes an integer number as input. + returns True if the number is spy. + >>> is_spy_number(-1) + False + >>> is_spy_number(0) + False + >>> is_spy_number(22) + True + >>> is_spy_number(1124) + True + >>> is_spy_number(124) + False + >>> is_spy_number(5.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=5.0] must be an integer + """ + if not isinstance(number, int): + msg = f"Input value of [number={number}] must be an integer" + raise TypeError(msg) + if number <= 0: + return False + digit_sum = 0 + digit_mul = 1 + while number > 0: + digit = number % 10 + digit_sum += digit + digit_mul *= digit + number //= 10 + if digit_sum == digit_mul: + return True + return False + + +if __name__ == "__main__": + import doctest + + doctest.testmod() \ No newline at end of file From 27e44b8dcafd39170446200334a7d35386d4f12f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 10:57:45 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/spy_number.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maths/special_numbers/spy_number.py b/maths/special_numbers/spy_number.py index 502c775ba45d..493f8c966aec 100644 --- a/maths/special_numbers/spy_number.py +++ b/maths/special_numbers/spy_number.py @@ -6,6 +6,8 @@ Examples of Spy Numbers: 22,123,1124,... https://www.scribd.com/document/895653665/Interesting-Number-Programs """ + + def is_spy_number(number: int) -> bool: """ This functions takes an integer number as input. @@ -45,4 +47,4 @@ def is_spy_number(number: int) -> bool: if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod()