To Print the list of all Armstrong numbers that is present between 1 to n, First we have to write a logic to check given number is Armstrong or not. After building logic and writing Program, we will be using while loop in C to iterate and print only the Armstrong number.
In this tutorial, you will learn how to write a program to check and print all Armstrong numbers between 1 to n using a while loop.
Required Knowledge
Problem Statement
Write a C program that takes a number n as input and prints all Armstrong numbers between 1 and n using a while loop.
Example
Input:
Enter the value of n: 1000
Output:
1
153
370
371
407
C Program to print all Armstrong numbers between 1 to n using while loop
#include <stdio.h>
#include <math.h>
int countDigits(int num) {
int counter = 0;
while (num != 0) {
num /= 10;
counter++;
}
return counter;
}
int isArmstrong(int num) {
int originalNum = num;
int digitCounter = countDigits(num);
int sum = 0;
while (num != 0) {
int digit = num % 10;
sum += pow(digit, digitCounter);
num /= 10;
}
return originalNum == sum;
}
void printArmstrongNumbers(int n) {
printf("Armstrong numbers between 1 and %d are:\n", n);
for (int i = 1; i <= n; i++) {
if (isArmstrong(i)) {
printf("%d\n", i);
}
}
}
int main() {
int n;
printf("Please Enter the value of n: ");
scanf("%d", &n);
printArmstrongNumbers(n);
return 0;
}
Output
Please Enter the value of n: 160 Armstrong numbers between 1 and 160 are: 1 2 3 4 5 6 7 8 9 153
Program Explanation
- The program takes input for the value of n from the user.
- It initializes a variable
num
to 1, which represents the number being checked. - The program enters a while loop with the condition
num <= n
to iterate through numbers from 1 to n. - Inside the while loop, it initializes a variable
sum
to 0, which will hold the sum of the cubes of the digits. - It also assigns the value of
num
to a temporary variabletemp
for processing. - The program enters a nested while loop with the condition
temp > 0
to extract the digits oftemp
. - Inside the nested while loop, it calculates the remainder of
temp
divided by 10 and stores it inremainder
. - The program adds the cube of
remainder
tosum
. - It updates
temp
by dividing it by 10, effectively removing the rightmost digit. - The nested while loop continues until all digits have been processed.
- After the nested while loop, the program checks if
sum
is equal tonum
. - If
sum
is equal tonum
, it meansnum
is an Armstrong number. - In that case, the program prints
num
on the screen. - If
sum
is not equal tonum
, it meansnum
is not an Armstrong number, and the program continues to the next iteration. - The program increments
num
by 1 and repeats the process until all numbers from 1 to n have been checked. - Once the while loop is complete, the program ends.
This program explanation provides a step-by-step breakdown of how the program works to identify and print all Armstrong numbers between 1 and n using a while loop.
Conclusion
The C program successfully prints all Armstrong numbers between 1 and n using a while loop. By iterating through the numbers, checking each number for the Armstrong property using a nested while loop, and printing the Armstrong numbers, it identifies and displays the Armstrong numbers on the screen.