From bf066d4ea8270effe437cce2db6fdd0d826eee15 Mon Sep 17 00:00:00 2001 From: Arun Kishore Voleti <49097688+ArunKishoreVoleti@users.noreply.github.com> Date: Thu, 16 Oct 2025 15:47:36 +0530 Subject: [PATCH 1/3] Add Disarium number checker implementation Introduces is_disarium_number function to check if a number is a Disarium number, including input validation and doctests for various cases. --- maths/special_numbers/disarum_number.py | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 maths/special_numbers/disarum_number.py diff --git a/maths/special_numbers/disarum_number.py b/maths/special_numbers/disarum_number.py new file mode 100644 index 000000000000..df4761e36cc1 --- /dev/null +++ b/maths/special_numbers/disarum_number.py @@ -0,0 +1,48 @@ +""" +A number n is said to be a Disarium number if +the sum of its digits powered to their respective positions equals the number itself. + +Examples of Disarium Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, ... +""" + +def is_disarium_number(number: int) -> bool: + """ + This function takes an integer number as input. + Returns True if the number is a Disarium number. + + >>> is_disarium_number(-1) + False + >>> is_disarium_number(0) + False + >>> is_disarium_number(1) + True + >>> is_disarium_number(89) + True + >>> is_disarium_number(135) + True + >>> is_disarium_number(175) + True + >>> is_disarium_number(518) + True + >>> is_disarium_number(598) + True + >>> is_disarium_number(123) + False + >>> is_disarium_number(89.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=89.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 < 1: + return False + + digits = str(number) + total = sum(int(digit) ** (idx + 1) for idx, digit in enumerate(digits)) + return total == number + +if __name__ == "__main__": + import doctest + doctest.testmod() From d6cd57535ab1cb38dfcd687c357ce7e4039c6bb3 Mon Sep 17 00:00:00 2001 From: ArunKishoreVoleti Date: Thu, 16 Oct 2025 10:17:59 +0000 Subject: [PATCH 2/3] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 0f9859577493..41f68f74914e 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -777,6 +777,7 @@ * [Bell Numbers](maths/special_numbers/bell_numbers.py) * [Carmichael Number](maths/special_numbers/carmichael_number.py) * [Catalan Number](maths/special_numbers/catalan_number.py) + * [Disarum Number](maths/special_numbers/disarum_number.py) * [Hamming Numbers](maths/special_numbers/hamming_numbers.py) * [Happy Number](maths/special_numbers/happy_number.py) * [Harshad Numbers](maths/special_numbers/harshad_numbers.py) From 164a2244918ad7b27bde1729862d34eec7bcd7e0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:18:55 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/disarum_number.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/maths/special_numbers/disarum_number.py b/maths/special_numbers/disarum_number.py index df4761e36cc1..2799a261e773 100644 --- a/maths/special_numbers/disarum_number.py +++ b/maths/special_numbers/disarum_number.py @@ -5,6 +5,7 @@ Examples of Disarium Numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, ... """ + def is_disarium_number(number: int) -> bool: """ This function takes an integer number as input. @@ -43,6 +44,8 @@ def is_disarium_number(number: int) -> bool: total = sum(int(digit) ** (idx + 1) for idx, digit in enumerate(digits)) return total == number + if __name__ == "__main__": import doctest + doctest.testmod()