## Armstrong Number

If the given number is equal to the sum of the power of n for each digit present in that integer then, that number can be Armstrong Number. For example 153 is Armstrong Number.

Number of individual digits in 153 = 3

153 = 1³ + 5³ + 3³

= 1 + 125 + 27 = 153

Below steps will show you the common approach to check for the Armstrong Number

**Steps:**

- Enter any number
- Divide the given number into individual digits (For Example, Divide 153 into 1, 5 and 3)
- Calculate the power of n for each individual and add those numbers
- Compare original value with Sum value.
- If they exactly matched then it is Armstrong number else it is not Armstrong

In this article we will show you, How to Write C Program For Armstrong Number Using While Loop, For Loop, Functions and Recursion. We will also show you, Armstrong Numbers between 1 to n.

## C Program for Armstrong Number Using While Loop

This C program allows the user to enter any positive integer and then, this program will check whether a number is Armstrong Number or Not using the While Loop

/* C Program For Armstrong Number */ #include #include int main() { int Number, Temp, Reminder, Times =0, Sum = 0; printf("\nPlease Enter number to Check for Armstrong \n"); scanf("%d", &Number); //Helps to prevent altering the original value Temp = Number; while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; } Temp = Number; while( Temp > 0) { Reminder = Temp %10; Sum = Sum + pow(Reminder, Times); Temp = Temp /10; } printf("\n Sum of entered number is = %d\n", Sum); if ( Number == Sum ) printf("\n %d is Armstrong Number.\n", Number); else printf("\n %d is not a Armstrong Number.\n", Number); return 0; }

**OUTPUT**

**ANALYSIS**

This program allows the user to enter any positive integer and then, that number is assigned to variable Number.

Next, We assign the original value to the Temp variable. This will help us to preserve our original value and then do all the manipulation on Temp variable.

Below While loop will make sure that, the given number is greater than 0. Statements inside the while loop will split the numbers and counts number of individual digits inside the given number. If you don’t understand the logic, Please refer C Program to Count Number Of Digits in a Number article.

while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; }

User Entered value: Number = 1634 and Sum = 0

Temp = Number

Temp = 1634

**First Iteration**

Reminder = Temp %10

Reminder = 1634 % 10 = 4

Sum = Sum + pow (Reminder, Times)

For this example, Times = 3 because number of digits in 1634 = 4. So pow() function will multiply the Reminder 4 times as shown below

Sum = Sum + (Reminder * Reminder * Reminder * Reminder)

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

Sum = 0 + 256

Sum = 256

Temp = Temp /10

Temp = 1634 /10

Temp = 163

**NOTE:** If the number of digits count is 5 then Reminder will be multiplied by 5 times.

**Second Iteration**

From the first Iteration the values of both Temp and Sum has been changed as: Temp = 163 and Sum = 256

Reminder = Temp %10

Reminder = 163 % 10 = 3

Sum = Sum + (Reminder * Reminder * Reminder * Reminder)

Sum = 0 + (3 * 3 * 3 * 3)

Sum = 256 + 81

Sum = 337

Temp = Temp /10

Temp = 163 /10

Temp = 16

**Third Iteration**

From the Third Iteration the values of both Temp and Sum has been changed as: Temp = 16 and Sum = 337

Reminder = Temp %10

Reminder = 16 % 10 = 6

Sum = Sum + (Reminder * Reminder * Reminder * Reminder)

Sum = 0 + (6 * 6 * 6 *6)

Sum = 337 + 1296

Sum = 1633

Temp = Temp /10

Temp = 16 /10

Temp = 1

**Fourth Iteration**

From the Fourth Iteration the values of both Temp and Sum has been changed as: Temp = 1 and Sum = 1633

Reminder = Temp %10

Reminder = 1 % 10 = 0

Sum = Sum + (Reminder * Reminder * Reminder * Reminder)

Sum = 1633 + (1 * 1 * 1 * 1)

Sum = 1633 + 1

Sum = 1634

Temp = Temp /10

Temp = 1/10

Temp = 0

**Here **Number = 0 so, the while loop condition will fail

if ( Number == Sum ) – Condition will check whether the user enter number is exactly equal to Sum number or not. If this condition is True, then it is Armstrong else the given number is not Armstrong number

if ( Number == Sum ) => if(1634 == 1634) –TRUE. So, Number is an Armstrong Number

**NOTE: **If you are finding the Armstrong number below 1000 then you can simply remove the while loop to count the number of digits in a number and then replace the below code

Sum = Sum + pow(Reminder, Times); With Sum = Sum + (Reminder * Reminder * Reminder)

## C Program for Armstrong Number Using For Loop

This program allows the user to enter any positive integer and then, this program will check whether a number is Armstrong Number or Not using For Loop

/* C Program For Armstrong Number using For loop */ #include #include int main() { int Number, Temp, Reminder, Times =0, Sum = 0; printf("\nPlease Enter any number to Check for Armstrong \n"); scanf("%d", &Number); Temp = Number; while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; } for(Temp = Number; Temp > 0; Temp = Temp /10 ) { Reminder = Temp % 10; Sum = Sum + pow(Reminder, Times); } printf("\nSum of entered number is = %d\n", Sum); if ( Number == Sum ) printf("\n%d is Armstrong Number.\n", Number); else printf("%d is not the Armstrong Number.\n", Number); return 0; }

**OUTPUT**

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 here: For Loop in C Programming

## C Program for Armstrong Number Using Functions

This C program allows the user to enter any positive integer and then, this program will check whether a number is Armstrong Number or Not using Functions

/* C Program For Armstrong Number using Functions*/ #include <stdio.h> #include <math.h> int Check_Armstrong (int); int main() { int Number, Sum = 0; printf("\nPlease Enter any number to Check for Armstrong \n"); scanf("%d", &Number); Sum = Check_Armstrong (Number); printf("Sum of entered number is = %d\n", Sum); if ( Number == Sum ) printf("\n%d is Armstrong Number.\n", Number); else printf("%d is not Armstrong Number.\n", Number); return 0; } int Check_Armstrong (int Number) { int Temp, Reminder, Times =0, Sum = 0; Temp = Number; while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; } for(Temp = Number; Temp > 0; Temp = Temp /10 ) { Reminder = Temp %10; Sum = Sum + pow(Reminder, Times); } return Sum; }

**OUTPUT**

**ANALYSIS**

When the compiler reaches to

Sum = Check_Armstrong (Number); line in main() program then the compiler will immediately jump to below function:

int Check_Armstrong (int Number)

We already explained LOGIC above example.

**NOTE: **If we create a function with Void then there is no need to return any value but, if we declared a function with any data type (int, float etc) then we have return something out from the function.

## C Program for Armstrong Number Using Recursion

This C program allows the user to enter any positive integer and then, this program will check whether a number is Armstrong Number or Not using Recursion concept.

/* C Program For Armstrong Number using Recursion */ #include <stdio.h> #include <math.h> int Check_Armstrong (int, int); int main() { int Number, Sum = 0, Times =0,Temp; printf("\nPlease Enter number to Check for Armstrong \n"); scanf("%d", &Number); Temp = Number; while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; } Sum = Check_Armstrong (Number, Times); printf("Sum of entered number is = %d\n", Sum); if ( Number == Sum ) printf("\n%d is Armstrong Number.\n", Number); else printf("%d is not the Armstrong Number.\n", Number); return 0; } int Check_Armstrong (int Number, int Times) { static int Reminder, Sum = 0; if (Number > 0) { Reminder = Number %10; Sum = Sum + pow(Reminder, Times); Check_Armstrong (Number /10, Times); return Sum; } else return 0; }

**OUTPUT**

**ANALYSIS**

In this function,

Armstrong_Check (Number /10);

Statement will help to call the function Recursively with updated value. If you miss this statement then, after completing the first line it will terminate. For example,

Number = 153

Then the output will be 27

Lets see the If condition

if (Number > 0) will check whether the number is greater than 0 or not. For Recursive functions it is very important to place a condition before using the function recursively otherwise, we will end up in infinite execution (Same like infinite Loop).

Please be careful 🙂

## C Program to Find Armstrong Numbers between the 1 to n

This program allows the user to enter minimum and maximum values. This program will find the Armstrong Numbers between the Minimum and Maximum values.

/* C Program for Armstrong Number between 1 to n */ #include<stdio.h> #include <math.h> int Check_Armstrong (int); int main() { int Number,Reminder,Reverse,Temp, Sum; int Minimum,Maximum; printf("\nPlease Enter the Minimum & Maximum Values\n"); scanf("%d %d",&Minimum, &Maximum); printf("Armstrong Numbers Between %d and %d are:\n",Minimum, Maximum); for(Number = Minimum; Number <= Maximum; Number++) { Sum = Check_Armstrong (Number); if(Number == Sum) printf("%d ",Number); } return 0; } int Check_Armstrong (int Number) { int Temp, Reminder, Times =0, Sum = 0; Temp = Number; while (Temp != 0) { Times = Times + 1; Temp = Temp / 10; } for(Temp = Number; Temp > 0; Temp = Temp /10 ) { Reminder = Temp %10; Sum = Sum + pow(Reminder, Times); } return Sum; }

**OUTPUT**

**ANALYSIS:**

This program allows the user to enter minimum and maximum values.

for (Number=Minimum; Number<=Maximum; Number++)

This For Loop helps compiler to iterate between Minimum and Maximum Variables, iteration starts at the Minimum and then it will not exceed Maximum variable.

if(Number==Sum) -– condition will check whether the iteration number is exactly equal to Reverse number or not. If this condition is True, then it is Armstrong else the given number is not Armstrong number.

If this condition is True then, below statement will be printed

printf("%d ",Number);

Thank you for Visiting Our Blog