C++ 编写检查阿姆斯特朗数的程序
要理解这个示例,你应该掌握以下 C++ 编程 主题的知识:
一个正整数被称为阿姆斯特朗数(n 阶),如果满足以下条件:
abcd... = a^n + b^n + c^n + d^n + ...
在三位数的阿姆斯特朗数的情况下,每个数字的立方和等于数字本身。例如,153 是一个阿姆斯特朗数,因为:
153 = 1*1*1 + 5*5*5 + 3*3*3
示例:检查三位数的阿姆斯特朗数
#include <iostream>
using namespace std;
int main() {
int num, originalNum, remainder, result = 0;
cout << "输入一个三位整数:";
cin >> num;
originalNum = num;
while (originalNum != 0) {
// remainder 包含最后一个数字
remainder = originalNum % 10;
result += remainder * remainder * remainder;
// 从原始数字中移除最后一位
originalNum /= 10;
}
if (result == num)
cout << num << " 是阿姆斯特朗数。";
else
cout << num << " 不是阿姆斯特朗数。";
return 0;
}
输出
输入一个整数:371
371 是阿姆斯特朗数。
在程序中,我们通过 while 循环迭代,直到 originalNum
变为 0。
在循环的每次迭代中,将 originalNum
的最后一位数字的立方加到 result
上。
remainder = originalNum % 10;
result += remainder * remainder * remainder;
同时,从 originalNum
中移除最后一位数字。
当循环结束时,各个数字立方的和被存储在 result
中。
示例:检查 n 位数的阿姆斯特朗数
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int num, originalNum, remainder, n = 0, result = 0, power;
cout << "输入一个整数:";
cin >> num;
originalNum = num;
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
// pow() 返回一个 double 类型的值
// round() 返回等价的 int
power = round(pow(remainder, n));
result += power;
originalNum /= 10;
}
if (result == num)
cout << num << " 是阿姆斯特朗数。";
else
cout << num << " 不是阿姆斯特朗数。";
return 0;
}
输出
输入一个整数:1634
1634 是阿姆斯特朗数。
在这个程序中,首先计算输入数字的位数并存储在 n
中。
然后,在 while
循环的每次迭代中,pow()
函数计算各个数字的 n 次幂。