In this post, We will be going to see different ways to write a code in Python for checking a number is Armstrong or not?
Armstrong number is a number in which the sum of each digit raised to the power of a number of digits present in a given number is equal to the number itself.
Example:
Input: Number = 153
Output: 153 is an Armstrong number
pow(1,3) + pow(5,3) + pow(3,3)
1 + 125 + 27
153
Input: Number = 121
Output: 121 is not a Armstrong number
pow(1,3) + pow(2,3) + pow(1,3)
1 + 8 + 1
10
Now, Let’s see the Codes:
Code 1: Use string and convert data type concept.
# given number
number = 153
# find number of digits
numOfDigits = len(str(number))
# initialise variable
summation = 0
# looping through each
# digit of a number
for digits in str(number) :
# each digit raised to the
# power of number of digits
# and sum
summation += int(digits) ** numOfDigits
if summation == number :
print("Given number",number,
"is an Armstrong number")
else:
print("Given number",number,
"is not a Armstrong number")
Output:
Given number 153 is an Armstrong number
Code 2: Use string and convert data type concept along with lambda.
# given number
number = 153
# find number of digits
numOfDigits = len(str(number))
# create a anonymous function
# for calculating digit raised
# to the power of number of digits
reqPower = lambda digit, number : int(digit) ** len(str(number))
# initialise variable
summation = 0
# looping through each
# digit of a number
for digits in str(number) :
# each digit raised to the
# power of number of digits
# and sum
summation += reqPower(digits, number)
if summation == number :
print("Given number",number,
"is an Armstrong number")
else:
print("Given number",number,
"is not a Armstrong number")
Output:
Given number 153 is an Armstrong number
Code 3: First find number of digits then calculate power and sum it.
# given number
number = 153
# take a temporary variable temp1
temp1 = number
# initialise variable
numOfDigits = 0
# calculate number of digits
if number == 0:
numOfDigits = 1
else:
while temp1 :
temp1 //= 10
numOfDigits += 1
# take a temporary variable temp2
temp2 = number
# initialise variable
summation = 0
# looping through each
# digit of a number
while temp2 :
# find remainder
remainder = temp2 % 10
# each digit raised to the power
# of number of digits and sum
summation += (remainder ** numOfDigits)
# update the variable
temp2 //= 10
if summation == number :
print("Given number",number,
"is an Armstrong number")
else:
print("Given number",number,
"is not a Armstrong number")
Output:
Given number 153 is an Armstrong number
Code 4: By creating user defined function for calculating number of digits and required sum.
# Create a user-defined function
# for calculating count of digits
# in a number
def countDigits(number) :
# take a temporary
# variable temp1
temp1 = number
# initialise variable
numOfDigits = 0
# calculate number of digits
if number == 0:
# return 1
return 1
else:
while temp1 :
temp1 //= 10
numOfDigits += 1
# return the count
return numOfDigits
# Create a user-defined function
# for calculating sum of digit raised
# to the power of a number of digits
def findSum(number) :
# take a temporary
# variable temp2
temp2 = number
# initialise variable
summation = 0
numOfDigits = countDigits(number)
# looping through each
# digit of a number
while temp2 :
# find remainder
remainder = temp2 % 10
# each digit raised to the power
# of number of digits and sum
summation += (remainder ** numOfDigits)
# update the variable
temp2 //= 10
# return the final value
return summation
# main code
if __name__ == "__main__" :
# given number
number = 153
# check for Armstrong number
if number == findSum(number) :
print("Given number",number,
"is an Armstrong number")
else:
print("Given number",number,
"is not a Armstrong number")
Output:
Given number 153 is an Armstrong number