Browse by Domains

Armstrong Number in C

A number is called Armstrong number when the sum of the nth power of each digit is equal to the given number.

  1. Introduction
  2. Algorithm of Armstrong Number in C
  3. Program of Armstrong Number in C
  4. Output
  5. Explanation

Introduction

If the Armstrong number is a positive integer of order n then it can be defined as,

abcde…. = pow (a, n) + pow (b, n) + pow (c, n) + pow (d, n) + pow (e, n) + ………

For example : 0, 1, 153, 370, 371, 1634 etc.

Let’s check whether 370 is an Armstrong number or not

370 = (3 * 3 * 3) + (7 * 7 * 7) + (0 * 0 * 0)

Here,    

(3 * 3 * 3) = 27

(7 * 7 * 7) = 343

(0 * 0 * 0) = 0

27 + 343 + 0 = 370, which is equal to the given number; hence it is an Armstrong number.

Let’s check four digits Armstrong number:

1634 = (1 * 1 * 1 * 1) + (6 * 6 * 6 * 6) + (3 * 3 * 3 * 3) + (4 * 4 * 4 * 4)

Here, 

(1 * 1 * 1 * 1) = 1

(6 * 6* 6 * 6) = 1296

(3 * 3 * 3 * 3) = 81

(4 * 4 * 4 * 4) = 256

1 + 1296 + 81 + 256 = 1634, which is equal to the given number; hence it is an Armstrong number.

Algorithm of Armstrong Number in C

  1. Take input from the user
  2. Initialize sum = 0 and take temporary variable to temporarily store user input (var = num)
  3. Now find out the total number of digits in the given number
  4. Total number of digits get stored in a
  5. Repeat the loop till var > 0
  6. Store the output of while loop in sum
  7. Check whether the user number is equal to sum or not
  8. If it is equal than print “It is an Armstrong number”
  9. Else print “It is not an Armstrong number”

Program of Armstrong Number in C

#include <stdio.h>
#include <conio.h>
 
int main ()
{
int num, var, rem, sum = 0, a = 0 ;
 
printf ( “ Please enter an integer: “ );  // Taking the user input
scanf ( “%d”, &num );
 
var = num;
 
while (var != 0)	// Finding the numbers of digits in a given number
{
var = var / 10;
++a;
}
 
var = num;
 
while (var > 0 )  	// Calculate the number to check  it is Armstrong or not
{
rem = var % 10;
sum = sum +  pow( rem, a );
var = var / 10;
}
 
if ( sum == num )	// Check whether the sum is equal to the given number of not
{
printf ( “ %d is an Armstrong number \n ”, num );
}
else
{
printf ( “ %d is not an Armstrong number \n ”, num );
}
return 0;
}

Output 1:

Please enter an integer: 371

371 is an Armstrong number

Output 2:

Please enter an integer: 1045

1045 is an Armstrong number

Explanation

In the above code, we have first declared all the variables that are needed in the program. The num is declared to hold the user input. The var is used for the temporary storage, and then rem is used to hold the remainder that is required for calculation. At last, we have the sum and a, which are assigned to zero.

We are accepting user input and then assigning that number to num. Then we assign this number to var so that we can make our calculation and keep the user input safe in the num variable. 

Now we are calculating the number of digits that user input has. For that, we have assigned num value to var, and we have taken a while loop. The while loop will be running until (var !=0) and then divide var by ten so that we can count the total number of digits in that number. Since var is of integer type, it will not store a decimal number, and then each time, the value of an increases by 1. This process is repeated until var is equal to zero. After that, it exits the loop.

Now again, we assign num value to var. Then we start the loop, and this loop will run till var is greater than zero. We have three steps to perform inside the loop. First, we find the remainder of the number, and then we calculate the power of the remainder using pow(rem, a), where rem represents the remainder, and a represents the power, i.e., total number of digits in a number, which was calculated above. Now we divide the var by 10, and this is done because we don’t require the last digit of the number because we have already used it. Since var is an integer type, it neglects the decimal value and stores the integer value. This process is repeated till var is greater than zero; after that, it exits from the loop, and the final value is stored in sum.

Once the control moves out of the loop, the if statement checks whether sum is equal to the num or not, where the num is the input given by the user. If the sum is equal to num, then it is an Armstrong number. Else it is not an Armstrong number.

So, here is all about “Armstrong Number in C.” We hope you find this implementation informative. Stay tuned for more upcoming blogs. Take up the Free Online C Programming for Beginners Course and learn more such concepts!

Avatar photo
Great Learning Team
Great Learning's Blog covers the latest developments and innovations in technology that can be leveraged to build rewarding careers. You'll find career guides, tech tutorials and industry news to keep yourself updated with the fast-changing world of tech and business.

Leave a Comment

Your email address will not be published. Required fields are marked *

Great Learning Free Online Courses
Scroll to Top