Python Program to Check Armstrong Number

In this article, we've created some programs in Python, to check whether a number entered by user is an Armstrong number or not. Here are the list of programs:

But before starting these programs, let me clear the thing about Armstrong number, that what it is.

What is an Armstrong Number ?

A number that equals to the sum of its own digits, where each digit raised to the power of number of digits. For example, 153 is an Armstrong number, because:

153 = 13 + 53 + 33
    = 1 + 125 + 27
    = 153

The result (153) is equal to the number (153) itself. So it is an Armstrong number.

Note - Because the total number of digit in 153 is 3, so each of its digit raised to the power of 3.

Note - 1, 2, 3, 4, 5, 6, 7, 8, and 9 are all Armstrong numbers.

Check Armstrong Number

To check whether a given number is an Armstrong number or not in Python, you have to ask from user to enter a number, then apply the formula, check and print the message as shown in the program given below:

print("Enter the Number: ")
num = int(input())

temp = num
noOfDigit = 0
res = 0
while num>0:
    num = int(num/10)
    noOfDigit = noOfDigit+1
num = temp
while num>0:
    rem = num%10
    pow = 1
    i = 0
    while i<noOfDigit:
        pow = pow*rem
        i = i+1
    res = res+pow
    num = int(num/10)

if res==temp:
    print("\nThe number is an Armstrong Number")
else:
    print("\nThe number is not an Armstrong Number")

Here is the initial output produced by this Python program:

check armstrong number python

Now supply the input say 1634 and press ENTER key to check whether it is an armstrong number or not. Here is its sample run with this user input:

find armstrong or not python

Since 1634 is a four-digit number, therefore:

1634 = 14 + 64 + 34 + 44
     = 1 + 1296 + 81 + 256
     = 1297 + 337
     = 1634

In above program, the following block of code:

while num>0:
num = int(num/10)
noOfDigit = noOfDigit+1

is used to count the total number of digits of given number. The dry run of this block of code with user input 1634 goes like:

And the following block of code:

while i<noOfDigit:
    pow = pow*rem
    i = i+1

is used to calculate the value of digit's raised to the power of number of digit. The dry run of this block of code goes like:

After second evaluation of this block of code, pow holds its value as 3*3*3*3, at third time pow holds 6*6*6*6 and at fourth time pow holds 1*1*1*1

Modified Version of Previous Program

This is the modified version of previous program. In this program, we've used end to skip printing of an automatic newline using print(). And rem**noOfDigit is used to find remnoOfDigit value. The str() method is used to convert any type of value to string type value. Rest of the things are similar to previous program.

print("Enter the Number: ", end="")
num = int(input())

temp = num
noOfDigit = len(str(num))
res = 0
while num>0:
    rem = num%10
    res = res + (rem ** noOfDigit)
    num = int(num/10)

if res==temp:
    print("\n" +str(temp)+ " is an Armstrong Number")
else:
    print("\n" +str(temp)+ " is not an Armstrong Number")

Here is its sample run with user input, 9:

check armstrong number program python

Check Armstrong Number using Function

This program uses used-defined function named checkArmstrongNum() to check whether a number entered by user at run-time is an Armstrong number or not.

def checkArmstrongNum(x):
    noOfDigit = 0
    res = 0
    temp = x
    while x>0:
        x = int(x/10)
        noOfDigit = noOfDigit + 1
    x = temp
    while x>0:
        rem = x%10
        pow = 1
        i = 0
        while i<noOfDigit:
            pow = pow * rem
            i = i + 1
        res = res + pow
        x = int(x/10)

    if res==temp:
        return 1
    else:
        return 0

print("Enter the Number: ", end="")
num = int(input())

chk = checkArmstrongNum(num)
if chk==1:
    print(num, "is an Armstrong Number")
else:
    print(num, "is not an Armstrong Number")

Here is its sample run with user input, 371:

check armstrong python

Here is another sample run with user input, 532:

python check armstrong number

Check Armstrong Number using Class

This is the last program of this article on checking Armstrong number, using class, an object-oriented feature of Python:

class fresherearth:
    def checkArmstrongNum(self, x):
        noOfDigit = len(str(x))
        res = 0
        temp = x
        while x>0:
            rem = x%10
            res = res + (rem ** noOfDigit)
            x = int(x/10)
        if res==temp:
            return 1
        else:
            return 0

print("Enter the Number: ", end="")
num = int(input())

obj = fresherearth()
chk = obj.checkArmstrongNum(num)

if chk==1:
    print(num, "is an Armstrong Number")
else:
    print(num, "is not an Armstrong Number")

An object obj is created of type fresherearth class to access its member function named checkArmstrongNum() using dot (.) operator.

Same Program in Other Languages

Python Online Test


« Previous Program Next Program »