Python Program For Armstrong Number

How to Write Python Program For Armstrong Number Using While Loop, For Loop, Functions, and Recursion? We also show you the Python program to print Armstrong Numbers between 1 to n.

Armstrong Number

If the given number is equal to the sum of the Nth power of each digit present in that integer, then that can be an Armstrong. For example, 370.

Individual digits in 370 = 3

370 = 3³ + 7³ + 0³

= 27 + 343 + 0 = 370

The below steps show you the common approach to checks for the Armstrong Number.

Algorithm Steps:

  1. The user has to enter any number.
  2. Count the total individual digits (For Example, 370 means 3).
  3. Divide the given integer into individual digits (For Example, Divide 370 into 3, 7, and 0).
  4. Calculate the power of n for each individual and add them.
  5. Compare the original value with the Sum value.
  6. If they exactly matched, then it is an Armstrong else, it is not.

Python Program for Armstrong Number Using While Loop

This program allows the user to enter any positive integer. And then, this Python program checks whether a number is Armstrong or Not using the While Loop.

# Python Program to check Armstrong Number Using While Loop
Number = int(input("Please Enter the Number to Check: "))

Sum = 0
Times = 0

Temp = Number
while Temp > 0:
    Times = Times + 1
    Temp = Temp // 10

Temp = Number
while Temp > 0:
    Reminder = Temp % 10
    Sum = Sum + (Reminder ** Times)
    Temp //= 10

if Number == Sum:
           print("%d is Armstrong." %Number)
else:
           print("%d is Not." %Number)
Python Program for Armstrong Number Using While Loop

This Armstrong number python program allows the user to enter any positive integer and then that assign it to a variable.

Next, We assign the original value to the Temp variable. It helps to preserve our original value and then do all the manipulation on the Temp variable.

The first While Loop makes sure that the given number is greater than 0. Statements inside the while loop split it and count the total individual digits inside the given integer. If you don’t understand the program logic, Please refer Find total Digits article in Python.

The Second While loop in this Armstrong Number program makes sure that the given integer is greater than 0. Let us see the working principle of this while loop in iteration wise

while Temp > 0: Reminder = Temp % 10 Sum = Sum + (Reminder ** Times) Temp //= 10

User Entered value for this Python Program For Armstrong Number = 9474 and Sum = 0

Temp =Number
Temp = 9474

First Iteration

Reminder = Temp %10
Reminder = 9474 % 10 = 4

Sum = Sum + pow (Reminder, Times)

For this example, Times =4 because total digits in 9474 = 4. So,

Sum = 0 + (4 * 4 * 4 * 4) => 0 + 256 => Sum = 256

Temp = Temp /10 => 9474 /10
Temp = 947

NOTE: If the digits count is 5, then Reminder multiplied by 5 times.

Second Iteration: From the first iteration, the values of both Temp and Sum changed as Temp = 163 and Sum = 256

Reminder = 947 % 10 = 7

Sum = 256 + (7 * 7 * 7 * 7) => 256 + 2401
Sum = 2657

Temp = 163 /10 = 94

Third Iteration: From the second iteration, the values of Temp = 94 and Sum = 2657.

Reminder = 94 % 10 = 4

Sum = 2657 + (4 * 4 * 4 * 4) => 2657 + 256
Sum = 2913

Temp = 94 /10 = 9

Python Program For Armstrong Number Fourth Iteration

From the third Iteration, the values of Temp = 9 and Sum = 2913

Reminder = 9 % 10 = 0

Sum = 2913 + (9 * 9 * 9 * 9) => 2913 + 6561
Sum = 9474

Temp = 9/10 = 0

Here Temp = 0, so the while loop condition fails.

if(9474 == 9474), Condition check whether the user enter is exactly equal to Sum or not. If this condition is True, then it is else it is not.

NOTE: If you are finding the number below 1000, remove the while loop to count the digits in an integer, and then replace the below code

Sum = Sum + (Reminder ** Times);

With

Sum = Sum + (Reminder * Reminder * Reminder)

Python Program for Armstrong Number using For Loop

This program allows the user to enter any positive integer, and then it checks whether a number is Armstrong or Not using For Loop.

# Using For Loop
Num = int(input("\nPlease Enter the Value : "))

Sum = 0
Times = 0
           
Temp = Num
while Temp > 0:
    Times = Times + 1
    Temp = Temp // 10

Temp = Num
for n in range(1, Temp + 1):
    Reminder = Temp % 10
    Sum = Sum + (Reminder ** Times)
    Temp //= 10

if Num == Sum:
    print("\n %d is.\n" %Num)
else:
    print("\n %d is Not.\n" %Num)

Please Enter the Value : 371

 371 is.



Please Enter the Value : 4458

 4458 is Not.

We just replaced the While loop in the above example with the For loop. If you don’t understand the for loop, then please refer For Loop article.

Python Program for Armstrong Number using Functions

This program allows the user to enter any positive integer and checks whether a number is Armstrong or Not using Functions.

# Using Functions
def ArmFind(val):
    total = 0
    Times = 0

    # Calculating individual digits
    tm = val
    while tm > 0:
        Times = Times + 1
        tm = tm // 10


    tm = val
    for n in range(1, tm + 1):
        Reminder = tm % 10
        total = total + (Reminder ** Times)
        tm //= 10
    return total


#User Input
val = int(input("Please Enter to Find : "))

if (val == ArmFind(val)):
    print("\n%d is." %val)
else:
    print("\n%d is Not." %val)

Please Enter to Find : 153

 153 is.

>>> 

Please Enter to Find : 2256

 2256 is Not.

In this Python Program For Armstrong Number example, we defined the following function to perform all the necessary calculations and return Sum.

def ArmFind(val):

When the compiler reaches the following code inside the If statement then, the compiler immediately jumps to the above-specified function.

ArmFind(val)

We have already explained the LOGIC above example.

Python Program for Armstrong Number using Recursion

It allows us to enter any positive integer. Next, this program checks whether a number is Armstrong or Not using the recursion or recursive function concept.

# using Recursive functions
total = 0
Times = 0

def Count_Of_Digits(value):
    global Times
    if(value > 0):
        Times = Times + 1
        Count_Of_Digits(value // 10)
    return Times

def ArmFind(value, Times):
    global total
    if(value > 0):
        Reminder = value % 10
        total = total + (Reminder ** Times)
        ArmFind(value //10, Times)
    return total

value = int(input("Please Enter the value : "))

Times = Count_Of_Digits(value)
total = ArmFind(value, Times)
if (value == total):
    print("\n%d is Armstrong." %value)
else:
    print("\n%d is Not." %value)

Please Enter the Value : 153

 153 is Armstrong.

>>> 

Please Enter the Value : 259

 259 is Not.

In this Armstrong number example, we defined two recursive functions. The following function accept integer values as parameter value and count the total individual digits in an integer recursively.

def Count_Of_Digits(value):

The following function accepts two integer values as parameter values. And it performs all the necessary calculations and returns the Sum.

def ArmFind(value, Times):

The following Statement in this Python Program For Armstrong Number helps to call the function Recursively with an updated value. If you miss this statement, then after completing the first line, it will terminate. For example,

ArmFind(value//10, Times)

Number= 153

Then the output = 27

Let’s see the If statement inside the above-specified functions

if (value > 0) checks whether the given value is greater than 0 or not. For Recursive functions, placing a condition before using the function recursively is essential. Otherwise, we end up in infinite execution (Same as infinite Loop).

Python Program to Find Armstrong Numbers between the 1 to n

This program allows you to enter minimum and maximum. And then, this program returns Armstrong Numbers between the Minimum and Maximum values.

The first two statements present in this program allow the user to enter the minimum and maximum values.

The for Loop helps to iterate between Minimum and Maximum Variables. Iteration starts at the Minimum, and then it won’t exceed the Maximum variable.

if(n == tot) -– condition, check whether the sum of the power N for each digit present in that integer is equal to a given Value or not. When the condition is True, it is else it is not.

If this condition is True, then it prints that integer as a result.

Minimum = int(input("Please Enter the Minimum : "))
Maximum = int(input("\nPlease Enter the Maximum : "))

for n in range(Minimum, Maximum + 1):
    tot = 0
    Times = 0
           
    tp = n
    while tp > 0:
        Times = Times + 1
        tp = tp // 10

    tp = n
    while tp > 0:
        Rem = tp % 10
        tot = tot + (Rem ** Times)
        tp //= 10
    if n == tot:
        print(n)

The Armstrong numbers list from 10 to 10000 python program output.

Please Enter the Minimum : 10

Please Enter the Maximum : 10000
153
370
371
407
1634
8208
9474