forked from TheAlgorithms/Python
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding Armstrong number (TheAlgorithms#1708)
* Adding Armstrong number * Update armstrong_numbers * Update armstrong_numbers.py * Update armstrong_numbers.py * Update armstrong_numbers.py Co-authored-by: Christian Clauss <[email protected]>
- Loading branch information
Showing
1 changed file
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
""" | ||
An Armstrong number is a number that is equal to the sum of the cubes of its digits. | ||
For example, 370 is an Armstrong number because 3*3*3 + 7*7*7 + 0*0*0 = 370. | ||
An Armstrong number is often called Narcissistic number. | ||
""" | ||
|
||
|
||
def armstrong_number(n: int) -> bool: | ||
""" | ||
This function checks if a number is Armstrong or not. | ||
>>> armstrong_number(153) | ||
True | ||
>>> armstrong_number(200) | ||
False | ||
>>> armstrong_number(1634) | ||
True | ||
>>> armstrong_number(0) | ||
False | ||
>>> armstrong_number(-1) | ||
False | ||
>>> armstrong_number(1.2) | ||
False | ||
""" | ||
if not isinstance(n, int) or n < 1: | ||
return False | ||
|
||
# Initialization of sum and number of digits. | ||
sum = 0 | ||
number_of_digits = 0 | ||
temp = n | ||
# Calculation of digits of the number | ||
while temp > 0: | ||
number_of_digits += 1 | ||
temp //= 10 | ||
# Dividing number into separate digits and find Armstrong number | ||
temp = n | ||
while temp > 0: | ||
rem = temp % 10 | ||
sum += (rem ** number_of_digits) | ||
temp //= 10 | ||
return n == sum | ||
|
||
|
||
# In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. | ||
def main(): | ||
num = int(input("Enter an integer number to check if it is Armstrong or not: ").strip()) | ||
print(f"{num} is {'' if armstrong_number(num) else 'not '}an Armstrong number.") | ||
|
||
|
||
if __name__ == '__main__': | ||
import doctest | ||
|
||
doctest.testmod() | ||
main() |