阿姆斯特朗数是一个数字,其中加和的位数之和等于该位数。阿姆斯特朗数的一些示例如下。
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";