C++ 程序检查阿姆斯特朗数


阿姆斯特朗数是一个数,其各个数位之和的数字方幂等于该数本身。一些阿姆斯特朗数的示例如下。

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;
}

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

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

如果数字等于 digitSum,则该数字是阿姆斯特朗数并且会输出。如果不是,则它不是阿姆斯特朗数。这可以在以下代码段中看到。

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

更新时间: 2020-06-24

957 浏览量

开启你的 职业生涯

完成课程后获得认证

开始
广告