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 <stdio.h>
#include <math.h>

int armstrong(int n) {
    int reminder = 0, sum = 0, total_digits = log10(n) + 1;
    
    while (n > 0) {
        reminder = n % 10;
        sum += (float)pow((float)reminder, (float)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))
        puts("Armstrong number");
    else
        puts("Not Armstrong number");

    n = 9474; // 9*9*9*9 + 4*4*4*4 + 7*7*7*7 + 4*4*4*4 =  9474
    if (n == armstrong(n))
        puts("Armstrong number");
    else
        puts("Not Armstrong number");

    return 0;
}



/*
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 <stdio.h>
#include <stdbool.h>
#include <math.h>

bool armstrong(int n) {
    int reminder = 0, sum = 0, total_digits = log10(n) + 1;
    int temp = n;
    
    while (temp > 0) {
        reminder = temp % 10;
        sum += (float)pow((float)reminder, (float)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))
        puts("Armstrong number");
    else
        puts("Not Armstrong number");

    n = 9474; // 9*9*9*9 + 4*4*4*4 + 7*7*7*7 + 4*4*4*4 =  9474
    if (armstrong(n))
        puts("Armstrong number");
    else
        puts("Not Armstrong number");

    return 0;
}



/*
run:

Armstrong number
Armstrong number

*/

 



answered Dec 26, 2023 by avibootz
edited Dec 26, 2023 by avibootz

Related questions

2 answers 185 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
...