Armstrong Number in C

How to Write a Program for Armstrong Number in C using While Loop, For Loop, Functions, and Recursion.? Here, we will also show you, C Program for Armstrong Number between 1 to n.

If the given number is equal to the sum of the power of n for each digit present in that integer, then that can be Armstrong Number in C programming. For example, 153 is an Armstrong Number in C programming because total individual digits in 153 = 3
153 = 1³ + 5³ + 3³
= 1 + 125 + 27 = 153

The below steps will show you the common approach to check for the Armstrong Number in C programming

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

C Armstrong Number using While Loop

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

#include <stdio.h>
#include <math.h>

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;
}
Armstrong Number Using While Loop

This Armstrong Number in C program allows the user to enter any positive integer. Next, it assigned to a variable. Next, We assign the original value to the Temp variable. It will help us to preserve our original value and then do all the manipulation on the Temp variable.

The While loop will make sure that the given value is greater than 0. And the statements inside the while loop will split the value and counts the total individual digits inside the given value.

If you don’t understand this program logic, Please refer C Program to Count Number Of Digits in a Number article.

Second While Loop will make sure that, the given integer is greater than 0. Let us see the working principle of this C Programming while loop in iteration wise

For this Armstrong number in c demonstration, 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 Armstrong Number in C example, Times = 3 because of the digits in 1634 = 4. So pow() function will multiply the Reminder 4 times.

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

Temp = Temp /10 = 1634 /10
Temp = 163

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

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

Reminder = Temp %10
Reminder = 163 % 10 = 3

Sum = 256 + (3 * 3 * 3 * 3)
Sum = 256 + 81 => 337

Temp = Temp /10 => 163 /10
Temp = 16

Third Iteration: Temp = 16 and Sum = 337

Reminder = Temp %10
Reminder = 16 % 10 = 6

Sum = 337 + (6 * 6 * 6 *6) => 337 + 1296
Sum = 1633

Temp = 16 /10
Temp = 1

Fourth Iteration: Temp = 1 and Sum = 1633

Reminder = 1 % 10 = 0

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

Temp = 1/10
Temp = 0

Here, temp = 0. So, the while loop condition in this c Armstrong Number program will fail

if (Number== Sum ) – Condition will check whether the user enter value is exactly equal to Sum or not. This condition is True, and it is Armstrong, else it is not.

if (Number== Sum ) => if(1634 == 1634) –TRUE.

NOTE: If you are finding the Armstrong number below 1000, remove the while loop to count the digits. Next, 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 for Armstrong number in c allows the user to enter any positive integer. And then, this program will check whether a number is Armstrong or Not using For Loop

#include <stdio.h>
#include <math.h>

int main()
{
  int Num, Temp, Reminder, Times =0, Sum = 0;
 
  printf("\nPlease Enter any num \n");
  scanf("%d", &Num);
  
  Temp = Num;
  
  while (Temp != 0) 
   {
     Times = Times + 1;
     Temp = Temp / 10;
   }
   
   for(Temp = Num; Temp > 0; Temp =  Temp /10 )
   {
     Reminder = Temp % 10;
     Sum = Sum + pow(Reminder, Times);
   }
 
  printf("\nSum = %d\n", Sum);

  if ( Num == Sum )
      printf("\n%d is Armstrong.\n", Num);
  else
      printf("%d is not the Armstrong.\n", Num);
 
  return 0;
}

We replaced the While loop in the above Armstrong Number in c example with the For loop. Please refer For Loop in C Programming to understand this program.


Please Enter any num
8208

Sum = 8208

8208 is Armstrong.

Program for Armstrong Number in C using Functions

This C Armstrong Number program allows the user to enter any positive integer. Next, this program checks whether the number is Armstrong or Not using Functions

#include <stdio.h>
#include <math.h>

int Check_Armstrong (int);

int main()
{
  int Number, Sum = 0;
 
  printf("\nPlease Enter any value \n");
  scanf("%d", &Number);

  Sum = Check_Armstrong (Number);
  printf("Sum = %d\n", Sum);

  if ( Number == Sum )
      printf("\n%d is Armstrong.\n", Number);
  else
      printf("%d is not Armstrong.\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;
}

Please Enter any value
1634

 Sum = 1634

 1634 is Armstrong.

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

int Check_Armstrong (int Number)

We already explained the LOGIC of this one in the above example.

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

Armstrong Number in C using Recursion program

This program allows you to enter any positive integer. Next, this C program will check whether a number is Armstrong or Not using Recursion concept.

In this Armstrong program, we used the Armstrong_Check (Number/10) statement inside a function. This statement will help to call the function Recursively with the updated value. If you miss this statement, after completing the first line, it will terminate. For example, Num = 153 then the output will be 27

Let’s see the If condition of this C Armstrong Number

if (Num > 0) will check whether the num 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).

#include <stdio.h>
#include <math.h>

int Check_Armstrong (int, int);

int main()
{
  int Number, Sum = 0, Times =0,Temp;
 
  printf("\nPlease Enter num \n");
  scanf("%d", &Number);
  
  Temp = Number;
  while (Temp != 0) 
   {
     Times = Times + 1;
     Temp = Temp / 10;
   }

  Sum = Check_Armstrong (Number, Times);
  printf("Sum of entered is = %d\n", Sum);

  if ( Number == Sum )
      printf("\n%d is Armstrong.\n", Number);
  else
      printf("%d is not the Armstrong.\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;
}

Please Enter num
153
Sum of entered is = 153

153 is Armstrong.

Armstrong Numbers in C between 1 to 1000 (or n)

This C Armstrong Number program allows you to enter a minimum and maximum values. And this program finds Armstrong Numbers between the Minimum and Maximum values.

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

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

#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 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;
}

Please Enter the Minimum & Maximum Values
10
1000000
Armstrong Between 10 and 1000000 are:
153 370 371 407 1634 8208 9474 54748 92727 93084 548834