You are here

C program to print Armstrong numbers

C program to print Armstrong numbers, in the program, a user inputs two integers, and we print all Armstrong numbers between the integers. Using a for loop, we check numbers in this range. In the loop, we call function check_armstrong, which returns '1' if a number is Armstrong and '0' otherwise. If you are not familiar with Armstrong numbers see Armstrong number in C.

C program

#include <stdio.h>

int check_armstrong(int);
int power(int, int);

int main ()
{
  int c, a, b;

  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);

  return 0;
}

int check_armstrong(int n) {
  long long sum = 0, t;
  int remainder, digits = 0;

  t = n;

  while (t != 0) {
    digits++;
    t = t/10;
  }

  t = n;

  while (t != 0) {
    remainder = t%10;
    sum = sum + power(remainder, digits);
    t = t/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;
}

Output of the program (In the sample output, we are printing Armstrong numbers in the range [0, 1000000]):
Armstrong numbers

Download Armstrong numbers program.