C program to generate armstrong numbers

Logic:

  1. input two integers
  2. print all Armstrong numbers between these two integers
  3. Using a for loop check numbers in this range, in the loop, call function check_armstrong which returns ‘1’ if a number is Armstrong and ‘0’ otherwise.
				
					#include <stdio.h> 
#include<conio.h> 
int check_armstrong(int); 
int power(int, int); 
void main ()
{ 
int c, a, b;
clrscr(); 
printf("Input two integers\n"); 
scanf("%d%d", &a, &b);
for (c = a; c <= b; c++) 
{ 
if (check_armstrong(c) == 1)
printf("%d\n", c);
} 
getch();
}
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 c , p = 1;
for (c = 1; c <= r; c++)
p = p*n;
return p;
}
				
			

Leave a Reply