C Program to generate Armstrong number within a given range
Program
#include <stdio.h>
int check_armstrong(int);
int power(int, int);
void main ()
{
int a, b, i;
printf("Input two integer numbers\n");
scanf("%d %d", &a, &b);
printf("List of armstrong numbers\n");
for (i = a; i <= b; i++)
{
if (check_armstrong(i) == 1)
printf("%d\n", i);
}
}
int check_armstrong(int n)
{
long long sum = 0, temp;
int remainder, digits = 0;
temp = n;
while (temp != 0)
{
digits++;
temp = temp/10;
}
temp = n;
while (temp != 0)
{
remainder = temp % 10;
sum = sum + power(remainder, digits);
temp = temp / 10;
}
if (n == sum)
return 1;
else
return 0;
}
int power(int n, int r)
{
int i, p = 1;
for (i = 1; i <= r; i++)
p = p * n;
return p;
}
Output
Input two integer numbers
10
1000
List of armstrong numbers
153
370
371
407