Lets write a C program to find Armstrong number or Narcissistic number from 1 to 500 using function.
Problem Statement
Write a C program to print out all Armstrong numbers or Narcissistic number between 1 and 500. If sum of cubes of each digit of the number is equal to the number itself, then the number is called an Armstrong number. Hint: Use function / method.
An Armstrong number or Narcissistic number is an n-digit base b number such that the sum of its (base b) digits raised to the power n is the number itself.
Example 1:
If number = 153
It has 3 digits: 1, 5 and 3. So n = 3.
result = 13 + 53 + 33 = 1 + 125 + 27 = 153.
So the original number 153 is equal to the result. So it’s an Armstrong Number.
Example 2:
If number = 1634
It has 4 digits: 1, 6, 3 and 4. So n = 4.
result = 14 + 64 + 34 + 44 = 1 + 1296 + 81 + 256 = 1634.
So the original number 1634 is equal to the result. So it’s an Armstrong Number.
Related Read:
C Program to print Armstrong Numbers between 1 and 500
Video Tutorial: C Program To Find Armstrong Numbers From 1 To 500 using Function
[youtube https://www.youtube.com/watch?v=V0Ws8aS4GwI]
To count the digits in a number
int n = 0, temp; temp = num; while(temp) { temp = temp / 10; n++; }
To Iterate through the digits in the number
while(num) { rem = num % 10; sum = sum + pow(rem, n); num = num / 10; }
To know above code logic, please visit and watch the video tutorial present at C Program to Check Armstrong Number.
Full Source Code: C Program To Find Armstrong Numbers Between 1 and 500 using Function
#include<stdio.h> #include<math.h> float armstrong(int); int main() { int count; for(count = 1; count <= 500; count++) { if(count == armstrong(count)) { printf("%d is a Armstrong number\n", count); } } return 0; } float armstrong(int num) { int rem, n = 0, temp; float sum = 0.0; temp = num; while(temp) { temp = temp / 10; n++; } while(num) { rem = num % 10; sum = sum + pow(rem, n); num = num / 10; } return(sum); }
Output:
1 is a Armstrong number
2 is a Armstrong number
3 is a Armstrong number
4 is a Armstrong number
5 is a Armstrong number
6 is a Armstrong number
7 is a Armstrong number
8 is a Armstrong number
9 is a Armstrong number
153 is a Armstrong number
370 is a Armstrong number
371 is a Armstrong number
407 is a Armstrong number
#include<stdio.h> #include<math.h> float armstrong(int); int main() { int count; for(count = 1; count <= 500; count++) { if(count == armstrong(count)) { printf("%d is a Armstrong number\n", count); } } return 0; } float armstrong(int num) { int rem; float sum = 0.0; while(num) { rem = num % 10; sum = sum + (rem * rem * rem); num = num / 10; } return(sum); }
Output:
1 is a Armstrong number
153 is a Armstrong number
370 is a Armstrong number
371 is a Armstrong number
407 is a Armstrong number
Logic To Find Armstrong Numbers Between 1 and 500 using Function
Using for loop(inside main method) we pass value(from 1 to 500) to armstrong function one by one. The value is present in variable count.
Function armstrong checks the number of digits present in the number(we call it as n) and then separates individual digits of the number and multiplies all the individual digits n times and adds them all and finally returns the sum.
If the armstrong function returned number and the value present in count are same then the value present in count is an Armstrong number, else we pass on to check the next number selected by for loop.
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List
For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert