Saturday, January 11, 2025
Google search engine
HomeData Modelling & AIC/C++ program for Armstrong Numbers

C/C++ program for Armstrong Numbers

Given a number N, the task is to check whether the given number is Armstrong number or not. If the given number is Armstrong Number then print “Yes” else print “No”.

A positive integer of D digits is called an armstrong-numbers of order D (order is the number of digits) if
N_{1}N_{2}N_{3}N_{4}... = N_{1}^{D} + N_{2}^{D} + N_{3}^{D} + N_{4}^{D}...
Where D is number of digit in number N
and N(1), N(2), N(3)… are digit of number N.

Examples:

Input: N = 153
Output: Yes
Explanation:
153 is an Armstrong number.
1*1*1 + 5*5*5 + 3*3*3 = 153

Input: 120
Output: No
Explanation:
120 is not an Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9

Approach: The idea is to count the number of digits(say d) in the given number N. For every digit(say r) in the given number N find the value of rd and if the summation of all the values is N then print “Yes” else print “No”.

Below is the implementation of the above approach:

C




// C program to find Armstrong number
#include <stdio.h>
  
// Function to calculate N raised
// to the power D
int power(int N, unsigned int D)
{
    if (D == 0)
        return 1;
  
    if (D % 2 == 0)
        return power(N, D / 2)
               * power(N, D / 2);
  
    return N * power(N, D / 2)
           * power(N, D / 2);
}
  
// Function to calculate the order of
// the number
int order(int N)
{
    int r = 0;
  
    // For each digit
    while (N) {
        r++;
        N = N / 10;
    }
    return r;
}
  
// Function to check whether the given
// number is Armstrong number or not
int isArmstrong(int N)
{
    // Calling order function
    int D = order(N);
  
    int temp = N, sum = 0;
  
    // For each digit
    while (temp) {
        int Ni = temp % 10;
        sum += power(Ni, D);
        temp = temp / 10;
    }
  
    // If satisfies Armstrong condition
    if (sum == N)
        return 1;
    else
        return 0;
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 153;
  
    // Function Call
    if (isArmstrong(N) == 1)
        printf("True\n");
    else
        printf("False\n");
    return 0;
}


C++




// C++ program to find Armstrong number
#include <bits/stdc++.h>
using namespace std;
  
// Function to calculate N raised
// to the power D
int power(int N, unsigned int D)
{
    if (D == 0)
        return 1;
  
    if (D % 2 == 0)
        return power(N, D / 2)
               * power(N, D / 2);
  
    return N * power(N, D / 2)
           * power(N, D / 2);
}
  
// Function to calculate the order of
// the number
int order(int N)
{
    int r = 0;
  
    // For each digit
    while (N) {
        r++;
        N = N / 10;
    }
    return r;
}
  
// Function to check whether the given
// number is Armstrong number or not
int isArmstrong(int N)
{
    // To find order of N
    int D = order(N);
  
    int temp = N, sum = 0;
  
    // Traverse each digit
    while (temp) {
        int Ni = temp % 10;
        sum += power(Ni, D);
        temp = temp / 10;
    }
  
    // If satisfies Armstrong condition
    if (sum == N)
        return 1;
    else
        return 0;
}
  
// Driver Code
int main()
{
    // Given Number N
    int N = 153;
  
    // Function Call
    if (isArmstrong(N) == 1)
        cout << "True";
    else
        cout << "False";
    return 0;
}


Output:

True

Time Complexity: O(log10N)
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments