You are here

C program to print Armstrong numbers

C program to print Armstrong numbers, in the program, a user will input two integers, and we will print all Armstrong numbers between these two integers. Using a for loop we will 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 C program.

C programming code

#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]):
C program output to generate Armstrong numbers

Download Generate Armstrong numbers program.

Share this