How to check whether a number is armstrong number in C++

2 Answers

0 votes
// Armstrong = a number that equals the sum of its digits, 
//             each raised to a power of the number of digits
// For example 153, it's an Armstrong number because 1^3 + 5^3 + 3^3 = 153

#include <iostream>
#include <cmath>

int armstrong(int n) {
    int reminder = 0, sum = 0, total_digits = log10(n) + 1;

    while (n > 0) {
        reminder = n % 10;
        sum += pow(reminder, total_digits);
        n = n / 10;
    }

    return sum;
}

int main(void) {
    int n = 153; // 1*1*1 + 5*5*5 + 3*3*3 = 153 
          
    if (n == armstrong(n))  
        std::cout << "Armstrong number\n";   
    else
        std::cout << "Not Armstrong number\n";   
        
    n = 9474; // 9*9*9*9 + 4*4*4*4 + 7*7*7*7 + 4*4*4*4 =  9474
    if (n == armstrong(n))  
        std::cout << "Armstrong number\n";   
    else
        std::cout << "Not Armstrong number\n";             
}
   
   
   
   
/*
run:
   
Armstrong number
Armstrong number
   
*/

 



answered Aug 21, 2021 by avibootz
edited Dec 26, 2023 by avibootz
0 votes
// Armstrong = a number that equals the sum of its digits, 
//             each raised to a power of the number of digits
// For example 153, it's an Armstrong number because 1^3 + 5^3 + 3^3 = 153

#include <iostream>
#include <cmath>
 
bool armstrong(int n) {
    int reminder = 0, sum = 0, total_digits = log10(n) + 1;
    int temp = n;
    
    while (temp > 0) {
        reminder = temp % 10;
        sum += pow(reminder, total_digits);
        temp = temp / 10;
    }
        
    if (sum == n) {
        return true;
    }
         
    return false;
}

int main(void) {
    int n = 153; // 1*1*1 + 5*5*5 + 3*3*3 = 153 
           
    if (armstrong(n))  
        std::cout << "Armstrong number\n";   
    else
        std::cout << "Not Armstrong number\n";   
         
    n = 9474; // 9*9*9*9 + 4*4*4*4 + 7*7*7*7 + 4*4*4*4 =  9474
    if (armstrong(n))  
        std::cout << "Armstrong number\n";   
    else
        std::cout << "Not Armstrong number\n";             
}
    
    
    
    
/*
run:
    
Armstrong number
Armstrong number
    
*/

 



answered Dec 26, 2023 by avibootz

Related questions

2 answers 173 views
1 answer 142 views
1 answer 139 views
1 answer 287 views
1 answer 151 views
1 answer 209 views
1 answer 200 views
...