- C Programming Examples
- C Programming Examples
- C Print Hello World
- C Get Input from User
- C Print Integer
- C Add Two Numbers
- C Add Subtract Multiply Divide
- C Add n Numbers
- C Area Perimeter of Square
- C Area Perimeter of Rectangle
- C Area Circum of Circle
- C Fahrenheit to Celsius
- C Celsius to Fahrenheit
- C Inches to Centimeters
- C Kilogram to Gram
- C Reverse a Number
- C Swap Two Numbers
- C Interchange Numbers
- C Print ASCII Value
- C Print Fibonacci Series
- C Check Palindrome or Not
- C Check Armstrong or Not
- C Find Armstrong Numbers
- C Find nCr and nPr
- C Find Profit Loss
- C Sum of their Square
- C First & Last Digit Sum
- C Sum of All Digit
- C Product of All Digit
- C Print Total Digit in Number
- C Check Perfect Number
- C Find Basic Gross Salary
- C Round Number to Integer
- C Print Series upto n Term
- C Find Factors of Number
- C if-else & Loop Programs
- C Check Even or Odd
- C Check Prime or Not
- C Check Alphabet or Not
- C Check Vowel or Not
- C Check Leap Year or Not
- C Is Reverse Equal Original
- C Make Calculator
- C Add Digits of Number
- Count Positive Negative Zero
- C Largest of Two Numbers
- C Largest of Three Numbers
- C Smallest of Two Numbers
- C Smallest of Three Numbers
- C Find Factorial of Number
- C Find LCM & HCF
- C Find LCM of n Numbers
- C Find HCF of n Numbers
- C Find Arithmetic Mean
- C Find Average, Percentage
- C Find Student Grade
- C Print Table of Number
- C Print Prime Numbers
- C Find Discount Purchase
- C Calculate Parcel Charge
- C Calculate Wage of Labor
- C Print Phone Bill
- C Conversion programs
- C Decimal to Binary
- C Decimal to Octal
- C Decimal to Hexadecimal
- C Binary to Decimal
- C Binary to Octal
- C Binary to Hexadecimal
- C Octal to Decimal
- C Octal to Binary
- C Octal to Hexadecimal
- C Hexadecimal to Decimal
- C Hexadecimal to Binary
- C Hexadecimal to Octal
- C Pattern Programs
- C Pattern Printing Programs
- C Print Diamond Pattern
- C Print Floyd's Triangle
- C Print Pascal's Triangle
- C Array Programs
- C 1D Array Programs
- C Linear Search
- C Binary Search
- C Largest Element in Array
- C Smallest Element in Array
- C Second Largest/Smallest
- C Count Even Odd
- C Array Element at Even
- C Array Element at Odd
- C Print Even Array Elements
- C Print Odd Array Elements
- C Sum/Product of Even/Odd
- C Reverse an Array
- C Insert Element in Array
- C Delete Element from Array
- C Merge Two Arrays
- C Bubble Sort
- C Selection Sort
- C Insertion Sort
- C Print Common Elements
- C 2D Array Programs
- C Add Two Matrices
- C Subtract Two Matrices
- C Transpose a Matrix
- C Multiply Two Matrices
- C Sum All Matrix Elements
- C Largest Element in Matrix
- C Print Row Column Total
- C 3D Array Programs
- C String Programs
- C Print String
- C Find Length of String
- C Compare Two String
- C Copy a String
- C Concatenate String
- C Reverse a String
- C Count Vowels Consonants
- C Replace Vowel in String
- C Delete Vowels from String
- C Delete Word from String
- C Frequency of Character
- C Count Word in String
- C Remove Spaces from String
- C Sort a String
- C Sort String in Alphabetical
- C Sort Words in Ascending
- C Sort Words in Descending
- C Uppercase to Lowercase
- C Lowercase to Uppercase
- C Swap Two Strings
- C Check Anagram or Not
- C Check Palindrome String
- C Print Number in Words
- C Print Successive Character
- C Character without Space
- C Remove Extra Spaces
- C File Programs
- C Read a File
- C Write Content to File
- C Read & Display File
- C Copy a File
- C Merge Two Files
- C Reverse File
- C Count All Character in File
- C List Files in Directory
- C Encrypt & Decrypt a File
- C Delete a File
- C Misc Programs
- Generate Random Numbers
- C Print Date Time
- C Print Message with Time
- C Get IP Address
- C Print Smiling face
- C Pass Array to Function
- Add Two Numbers using Pointer
- C Address of Variable
- C Shutdown Computer
- C Programming Tutorial
- C Tutorial
- C Programming Library
- C Standard Library
- C Programming Test
- C Programming Test
- Give Online Test
- All Test List

# C Program to Generate Armstrong Numbers

In this article, you will learn and get code to print Armstrong numbers in given range with and without using user-defined function. But before going through program, let's first understand about it.

### What is Armstrong Number ?

An Armstrong number is 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 = 1^{3}+5^{3}+3^{3}= 1+125+27 = 153

Since **153** is a 3-digit number, therefore each digit raised to the power of 3. Now let's move on and implement it in a C program.

## Generate Armstrong Numbers in Given Range

This program prints all the Armstrong numbers lies between the range provided by user at run-time.

#include<stdio.h> #include<conio.h> int main() { int start, end, temp, noOfDigit, num, res=0, rem, pow, i; printf("Enter the Interval: "); scanf("%d%d", &start, &end); printf("\nArmstrong Numbers between %d and %d:-\n", start, end); while(start<=end) { temp = start; noOfDigit=0; while(temp>0) { temp = temp/10; noOfDigit++; } num = start; while(num>0) { rem = num%10; pow = 1; i = 0; while(i<noOfDigit) { pow = pow*rem; i++; } res = res + pow; num = num/10; } if(res==start) printf(" %d\n", res); start++; res = 0; } getch(); return 0; }

This program was build and run under **Code::Blocks** IDE. Here is its sample run:

Now supply and two number as interval say **1** and **5000** to print all the Armstrong numbers between
these two. That is, the snapshot given below shows all the Armstrong numbers from 1 to 5000:

**Note - ** Every single digit number is an Armstrong number. Since it is a 1-digit, therefore power raised
to it will be 1 (as defined in definition given above), and any number raised to the power of 1 is equal to the number itself.

Therefore, **1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634** are Armstrong numbers between 1 to 5000. Because,

- 1 = 1
^{1}(__digit to the power of 1, for 1-digit number__) - 2 = 2
^{1} - 3 = 3
^{1} - 4 = 4
^{1} - 5 = 5
^{1} - 6 = 6
^{1} - 7 = 7
^{1} - 8 = 8
^{1} - 9 = 9
^{1} - 153 = 1
^{3}+5^{3}+3^{3}(__digit to the power of 3, for 3-digit number__) - 370 = 3
^{3}+7^{3}+0^{3} - 371 = 3
^{3}+7^{3}+1^{3} - 407 = 4
^{3}+0^{3}+7^{3} - 1634 = 1
^{4}+6^{4}+3^{4}+4^{4}(__digit to the power of 4, for 4-digit number__)

The following block of code

```
temp = start;
noOfDigit=0;
while(temp>0)
{
temp = temp/10;
noOfDigit++;
}
```

is used to find the *number of digit* for current number. That is, the value of **start** variable gets initialized to
**temp** and using this variable, this block of code finds that how many digit this number has.

Here is another block of code,

```
pow = 1;
i = 0;
while(i<noOfDigit)
{
pow = pow*rem;
i++;
}
```

which is used to find *digit raised to the power*'s value. For example, if the current digit is
**3** and the number is a 3-digit number, then this block of code will find the value of **3 ^{3}**.
Now let's create the same purpose program using a user-defined function.

### Using User-defined Function

This program is little simple to understand as it is created using user-defined function. That is, the two block of
codes were required to run more than one time, is shifted in the function, and the name of that two functions are
**findNoOfDigit(int)** (finds number of digit) and **pow(int rem, int noOfDigit)** (finds digit raised to
power's value). Finding number of digits means, if a number is 370, therefore it will return 3. Because it is
a 3-digit number. Whereas finding digit raised to power's value means, if a digit is 3 (from a 3-digit number),
then **3 ^{3}** equals to 27, therefore 27 gets returned by function.

#include<stdio.h> #include<conio.h> int findNoOfDigit(int); int pow(int, int); void generateArmNos(int, int); int main() { int start, end; printf("Enter the Interval: "); scanf("%d%d", &start, &end); printf("\nArmstrong Numbers between %d and %d:-\n", start, end); generateArmNos(start, end); getch(); return 0; } void generateArmNos(int start, int end) { int noOfDigit, num, digToPowVal, i, rem, res=0; while(start<=end) { noOfDigit = findNoOfDigit(start); num = start; while(num>0) { rem = num%10; digToPowVal = pow(rem, noOfDigit); res = res+digToPowVal; num = num/10; } if(res==start) printf(" %d\n", res); start++; res = 0; } } int findNoOfDigit(int temp) { int noOfDigit=0; while(temp>0) { temp = temp/10; noOfDigit++; } return noOfDigit; } int pow(int rem, int noOfDigit) { int digToPowVal = 1, i=0; while(i<noOfDigit) { digToPowVal = digToPowVal*rem; i++; } return digToPowVal; }

This program produced the same output as of previous one.

#### Same Program in Other Languages

« Previous Program Next Program »

Like/Share Us on Facebook 😋