Write a Program to Check if a Number is an Armstrong Number in C

Write a Program to Check if a Number is an Armstrong Number

An Armstrong number (also known as a narcissistic number) is a number that is equal to the sum of its own digits each raised to the power of the number of digits. In this post, we’ll show you how to write a C program that checks whether a given number is an Armstrong number.

1. What is an Armstrong Number?

A number is an Armstrong number if the sum of its digits each raised to the power of the number of digits equals the number itself. For example:

  • 153 is an Armstrong number because 1³ + 5³ + 3³ = 153
  • 9474 is an Armstrong number because 9⁴ + 4⁴ + 7⁴ + 4⁴ = 9474

2. Importance of Armstrong Numbers

Armstrong numbers are interesting from a mathematical perspective and can be used as a great programming exercise to help developers practice working with loops, conditionals, and basic number manipulations.

3. Writing the Program

Let’s write a C program to check whether a given number is an Armstrong number.

Code Example: Checking if a Number is an Armstrong Number

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

int main() {
    int num, originalNum, remainder, result = 0, n = 0;

    // Prompt the user to enter a number
    printf("Enter an integer: ");
    scanf("%d", &num);

    originalNum = num;

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

    originalNum = num;

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

    // Check if the result equals the original number
    if (result == num)
        printf("%d is an Armstrong number.\n", num);
    else
        printf("%d is not an Armstrong number.\n", num);

    return 0;
}

Explanation of the Code

Let’s break down how the program works:

  • We first declare the variables num, originalNum, remainder, result, and n. n stores the number of digits in the input number.
  • The program prompts the user to enter an integer, and this number is stored in num.
  • The while loop first determines how many digits the number has by repeatedly dividing the number by 10 and incrementing n.
  • We then reset originalNum to the original value of num and use another while loop to compute the sum of each digit raised to the power of n.
  • Finally, we compare the result with the original number. If they are equal, the number is an Armstrong number; otherwise, it is not.

4. Example Output

Here’s an example of how the program works:

Enter an integer: 153
153 is an Armstrong number.

Enter an integer: 123
123 is not an Armstrong number.

In this example, the user inputs 153, and the program correctly identifies it as an Armstrong number. When the user inputs 123, the program identifies it as not being an Armstrong number.

5. Common Mistakes to Avoid

When working with Armstrong numbers, there are a few common issues to be aware of:

  • Forgetting to Raise to the Power: Be sure to raise each digit to the power of the number of digits. It’s easy to overlook this and only sum the digits instead.
  • Integer Overflow: For very large numbers, raising digits to a high power may result in integer overflow. Be sure your data type can handle the size of the resulting number.
  • Handling Negative Numbers: Armstrong numbers are generally defined for positive integers. You can modify the program to check only positive numbers, or handle negative input gracefully.

6. Expanding the Program

Once you’ve mastered the basic program, here are some ways you can expand it:

  • Modify the program to check for Armstrong numbers within a given range.
  • Write a function that takes a number as input and returns whether it is an Armstrong number. This can make your code more modular and reusable.
  • Extend the program to handle very large numbers by using a data type like long long for larger integers.

7. Conclusion

In this post, we’ve walked through how to write a C program to check whether a number is an Armstrong number. We explored how to break down the problem by determining the number of digits, raising each digit to the appropriate power, and summing the results.

Armstrong numbers are a great example of how mathematical concepts can be applied in programming to solve interesting problems. Keep practicing, and you’ll continue to build your skills in both programming and problem-solving.

0 Comments

Post a Comment

Post a Comment (0)

Previous Post Next Post