C Program to Find Nth Armstrong Number

# C Program to Find Nth Armstrong Number

In this program, we will write a C program to find the Nth Armstrong number.

Problem Statement:

We need to take an input integer `n` from the user, which denotes the position of the Armstrong number to be found. Then, we have to calculate the Nth Armstrong number and display it on the screen.

Solution:

An Armstrong number is a number that is equal to the sum of its own digits raised to the power of the number of digits. For example, 153 is an Armstrong number because 1^3 + 5^3 + 3^3 = 153. Similarly, 371 is also an Armstrong number because 3^3 + 7^3 + 1^3 = 371. Armstrong numbers are named after Michael F. Armstrong, who was a mathematician. These numbers are also known as narcissistic numbers, pluperfect digital invariants (PPDI), and sometimes also called plus perfect numbers.

```#include <stdio.h>
#include <math.h>

int isArmstrong(int num);

int main() {
int n, i, count = 0;

// Get the value of n from the user
printf("Enter the value of n: ");
scanf("%d", &n);

// Find the Nth Armstrong number
for (i = 0; count < n; i++) {
if (isArmstrong(i)) {
count++;
}
}

printf("The %dth Armstrong number is %d", n, i - 1);

return 0;
}

// Function to check whether a number is Armstrong or not
int isArmstrong(int num) {
int originalNum, remainder, n = 0, result = 0;

originalNum = num;

// Calculate the number of digits in the number
while (originalNum != 0) {
originalNum /= 10;
++n;
}

originalNum = num;

// Calculate the sum of nth power of each digit
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}

// Check whether the number is Armstrong or not
if (result == num) {
return 1;
}
else {
return 0;
}
}
```

Output

Explanation:

1. We first include the standard input-output library `stdio.h` and the `math.h` library for using the `pow` function in the program using the `#include` preprocessor directive.
2. Then, we declare the main function using the `int main()` syntax.
3. We declare three variables `n`, `i`, and `count` as integers.
4. We use the `printf` function to prompt the user to enter the value of `n`.
5. We use the `scanf` function to read the value of `n` entered by the user and store it in the `n` variable.
6. We declare a for loop that runs from 0 to infinity. Inside the loop, we call the `isArmstrong` function to check whether the current number is an Armstrong number or not. If it is an Armstrong number, we increment the `count` variable. The loop stops when `count` becomes equal to `n`.
7. We use the `printf` function to display the Nth Armstrong number on the screen.
8. We declare the `isArmstrong` function that takes an integer `num` as input and returns an integer as output. Inside the function, we declare four integer variables `originalNum`, `remainder`, `n`, and `result`, and initialize the `result` variable to 0.
9. We store the value of `num` in `originalNum` variable for future reference.
10. We use a while loop to calculate the number of digits in the number `num` and store it in the `n` variable.
11. We use another while loop to calculate the sum of nth power of each digit of the number `num` and store it in the `result` variable.
12. We check whether the number `num` is an Armstrong number or
13. not by comparing the value of `result` with the value of `num`. If they are equal, then the function returns 1, which indicates that the number is an Armstrong number. Otherwise, the function returns 0, indicating that the number is not an Armstrong number.
14. Conclusion:
15. In this program, we have successfully written a C program to find the Nth Armstrong number. We have used a function to check whether a number is Armstrong or not. This program can be useful in various applications where we need to find the Nth Armstrong number.