C ++程序检查Armstrong号码

阿姆斯特朗数是一个数字,其中加和的位数之和等于该位数。阿姆斯特朗数的一些示例如下。

3 = 3^1
153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371
407 = 4^3 + 0^3 + 7^3 = 64 +0 + 343 = 407

检查号码是否为阿姆斯壮号码的程序如下。

示例

#include <iostream>
#include <cmath<
using namespace std;
int main() {
   int num = 153, digitSum, temp, remainderNum, digitNum ;
   temp = num;
   digitNum = 0;
   while (temp != 0) {
      digitNum++;
      temp = temp/10;
   }
   temp = num;
   digitSum = 0;
   while (temp != 0) {
      remainderNum = temp%10;
      digitSum = digitSum + pow(remainderNum, digitNum);
      temp = temp/10;
   }
   if (num == digitSum)
   cout<<num<<" is an Armstrong number";
   else
   cout<<num<<" is not an Armstrong number";
   return 0;
}

输出结果

153 is an Armstrong number

在上述程序中,确定给定的号码是否是阿姆斯特朗号码。这可以通过多个步骤完成。首先找到数字中的位数。这是通过为每个数字在digitNum上添加一个来完成的。

以下代码片段对此进行了演示-

temp = num;
digitNum = 0;
while (temp != 0) {
   digitNum++;
   temp = temp/10;
}

在知道位数之后,通过将每个数字加到digitNum的幂(即位数)来计算digitSum。在下面的代码片段中可以看到。

temp = num;
digitSum = 0;
while (temp != 0) {
   remainderNum = temp%10;
   digitSum = digitSum + pow(remainderNum, digitNum);
   temp = temp/10;
}

如果该数字等于digitSum,则该数字是Armstrong的数字并被打印。如果不是,则它不是Armstrong号码。在下面的代码片段中可以看到。

if (num == digitSum)
cout<<num<<" is an Armstrong number";
else
cout<<num<<" is not an Armstrong number";