跳到主要内容

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 次幂。