C++ 程序 在两个整数间查找阿姆斯特朗数
阿姆斯特朗数(Armstrong number)是指一个 n 位数 ( n≥3 ),它的每个位上的数的 n 次幂之和等于它本身。
例如:153 = 1^3 + 5^3 + 3^3,是一个 3 位数的阿姆斯特朗数。
在本文中,我们将写一个 C++ 程序来查找两个整数之间的所有阿姆斯特朗数。
算法
我们将用一个函数来检查某个数是否为阿姆斯特朗数,并将其用在主函数中来查找两个整数之间的所有阿姆斯特朗数。
下面是我们将使用的算法:
- 从第一个整数开始迭代到第二个整数
- 对于每个整数,计算其位数 n
- 将该整数的每个位数的 n 次幂加起来得到总和 sum
- 如果 sum 等于该整数,则将其打印出来,表示该整数是一个阿姆斯特朗数
代码
下面是我们的 C++ 代码:
#include <iostream>
#include <cmath>
using namespace std;
bool isArmstrong(int num) {
int sum = 0;
int n = to_string(num).length();
int temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
return sum == num;
}
void findArmstrong(int start, int end) {
for (int i = start; i <= end; i++) {
if (isArmstrong(i)) {
cout << i << " ";
}
}
}
int main() {
int start, end;
cout << "请输入两个整数(以空格分隔):";
cin >> start >> end;
cout << start << " 到 " << end << " 之间的阿姆斯特朗数为:";
findArmstrong(start, end);
return 0;
}
在上面的代码中,我们使用了
“`isArmstrong“` 函数来检查一个数是否为阿姆斯特朗数。该函数的实现是先计算该数的位数,然后将每个位数的 n 次幂加起来得到总和,最后比较该数和总和是否相等。
在主函数
“`main“` 中,我们通过输入两个整数来调用 “`findArmstrong“` 函数来查找两个整数之间的所有阿姆斯特朗数。该函数使用一个 for 循环来迭代两个整数之间的所有数,并通过调用 “`isArmstrong“` 函数来检查每个数是否为阿姆斯特朗数。如果是,则将其打印出来。
要运行上面的程序,请将其保存为
“`armstrong.cpp“` 文件,然后在命令行中输入以下命令:
g++ -o armstrong armstrong.cpp
./armstrong
结论
在本文中,我们学习了如何编写一个 C++ 程序来查找两个整数之间的所有阿姆斯特朗数。我们通过定义一个名为
“`isArmstrong“` 的函数来检查某个数是否为阿姆斯特朗数,并将其用在另一个名为 “`findArmstrong“` 的函数中来查找两个整数之间的所有阿姆斯特朗数。通过这个简单的程序,我们可以了解到算法实现的基本思路,并且能够更加熟练地使用 C++ 语言来进行编程。