📜  C程序检查阿姆斯壮编号

📅  最后修改于: 2021-05-28 04:39:08             🧑  作者: Mango

给定数字x,请确定给定数字是否为阿姆斯特朗数字。

n位数字的正整数称为if的n阶阿姆斯特朗数(order是位数)。

abcd... = pow(a,n) + pow(b,n) + pow(c,n) + pow(d,n) + .... 

例子:

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

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

Input : 1253
Output : No
1253 is not a Armstrong Number
1*1*1*1 + 2*2*2*2 + 5*5*5*5 + 3*3*3*3 = 723

Input : 1634
Output : Yes
1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4 = 1634
C++
// C++ program to determine whether the number is
// Armstrong number or not
#include
using namespace std;
  
/* Function to calculate x raised to the power y */
int power(int x, unsigned int y)
{
    if( y == 0)
        return 1;
    if (y%2 == 0)
        return power(x, y/2)*power(x, y/2);
    return x*power(x, y/2)*power(x, y/2);
}
  
/* Function to calculate order of the number */
int order(int x)
{
    int n = 0;
    while (x)
    {
        n++;
        x = x/10;
    }
    return n;
}
  
// Function to check whether the given number is
// Armstrong number or not
bool isArmstrong(int x)
{
    // Calling order function
    int n = order(x);
    int temp = x, sum = 0;
    while (temp)
    {
        int r = temp%10;
        sum += power(r, n);
        temp = temp/10;
    }
  
    // If satisfies Armstrong condition
    return (sum == x);
}
  
// Driver Program
int main()
{
    int x = 153;
    cout << isArmstrong(x) << endl;
    x = 1253;
    cout << isArmstrong(x) << endl;
    return 0;
}
Please refer complete article on Program for Armstrong Numbers for more details!Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.