From 85cc767d057f21525388430d6c0448c2fce9bd42 Mon Sep 17 00:00:00 2001 From: khanrukku Date: Tue, 12 May 2026 08:37:11 +0530 Subject: [PATCH 1/2] Add Armstrong number check algorithm --- maths/armstrong_number.py | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 maths/armstrong_number.py diff --git a/maths/armstrong_number.py b/maths/armstrong_number.py new file mode 100644 index 000000000000..a8948a56e8c9 --- /dev/null +++ b/maths/armstrong_number.py @@ -0,0 +1,67 @@ +""" +Armstrong Number (Narcissistic Number) Checker + +An Armstrong number is a number that is equal to the sum of its own digits +each raised to the power of the number of digits. + +For example: +- 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153 (3 digits) +- 9474 = 9^4 + 4^4 + 7^4 + 4^4 = 6561 + 256 + 2401 + 256 = 9474 (4 digits) + +Author: Rukaiya Khan +""" + + +def is_armstrong_number(number: int) -> bool: + """ + Check if a number is an Armstrong number. + + Args: + number: The number to check (must be non-negative) + + Returns: + True if the number is an Armstrong number, False otherwise + + Examples: + >>> is_armstrong_number(0) + True + >>> is_armstrong_number(1) + True + >>> is_armstrong_number(153) + True + >>> is_armstrong_number(370) + True + >>> is_armstrong_number(371) + True + >>> is_armstrong_number(407) + True + >>> is_armstrong_number(9474) + True + >>> is_armstrong_number(123) + False + >>> is_armstrong_number(100) + False + """ + if number < 0: + return False + + # Convert to string to easily get digits + num_str = str(number) + num_digits = len(num_str) + + # Calculate sum of each digit raised to power of number of digits + sum_of_powers = sum(int(digit) ** num_digits for digit in num_str) + + return sum_of_powers == number + + +if __name__ == "__main__": + import doctest + doctest.testmod() + + # Test with some examples + print("Armstrong numbers up to 1000:") + for num in range(1000): + if is_armstrong_number(num): + print(num, end=" ") + print() \ No newline at end of file From 9bc9ac9b26e4aaf7af6b0a40ed2303703198c2f0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 03:10:11 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/armstrong_number.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/maths/armstrong_number.py b/maths/armstrong_number.py index a8948a56e8c9..ea7938e2688d 100644 --- a/maths/armstrong_number.py +++ b/maths/armstrong_number.py @@ -1,7 +1,7 @@ """ Armstrong Number (Narcissistic Number) Checker -An Armstrong number is a number that is equal to the sum of its own digits +An Armstrong number is a number that is equal to the sum of its own digits each raised to the power of the number of digits. For example: @@ -15,13 +15,13 @@ def is_armstrong_number(number: int) -> bool: """ Check if a number is an Armstrong number. - + Args: number: The number to check (must be non-negative) - + Returns: True if the number is an Armstrong number, False otherwise - + Examples: >>> is_armstrong_number(0) True @@ -44,24 +44,25 @@ def is_armstrong_number(number: int) -> bool: """ if number < 0: return False - + # Convert to string to easily get digits num_str = str(number) num_digits = len(num_str) - + # Calculate sum of each digit raised to power of number of digits sum_of_powers = sum(int(digit) ** num_digits for digit in num_str) - + return sum_of_powers == number if __name__ == "__main__": import doctest + doctest.testmod() - + # Test with some examples print("Armstrong numbers up to 1000:") for num in range(1000): if is_armstrong_number(num): print(num, end=" ") - print() \ No newline at end of file + print()