C++程序 打印1到1000的阿姆斯特朗数
概述
阿姆斯特朗数(Armstrong Number),也称为自恋数、水仙花数、变形数,指的是一个n位数,其各个数位数字的n次方之和等于该数本身。例如153就是一个三位数的阿姆斯特朗数,因为1^3 + 5^3 + 3^3 = 153。
在本文中,我们将使用C++编写一个程序来打印出1到1000之间的所有阿姆斯特朗数。
解题思路
要解决这个问题,我们需要遍历1到1000之间的所有数字并检查它们是否为阿姆斯特朗数。因此,我们需要编写一个循环来遍历这个数字范围,并在循环中检查每个数字是否满足阿姆斯特朗数的条件。
检查一个数字是否为阿姆斯特朗数的方法是,将该数字分解为它的各个位数,然后将每个位数的n次方加起来。如果加起来的值等于原始数字本身,则该数字为阿姆斯特朗数,否则不是。
因此,我们需要编写一个函数来计算一个数字的各个位数的n次方之和,并将其与原始数字进行比较。
代码实现
下面是完整的C++代码实现:
#include <iostream>
#include <cmath>
using namespace std;
int armstrongSum(int num, int n) {
int sum = 0;
int digit;
while (num != 0) {
digit = num % 10;
sum += pow(digit, n);
num /= 10;
}
return sum;
}
int main() {
int n = 3;
int limit = 1000;
for (int i = 1; i <= limit; i++) {
if (i == armstrongSum(i, n)) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
首先,我们定义了一个名为armstrongSum的函数来计算一个给定数字的各个位数的n次方之和。该函数接受两个参数:num是要计算的数字,n是要求指数的数字。该函数使用一个while循环来迭代分解数字的各个位数,并使用pow函数来计算每个位数的n次方并将其添加到sum变量中。最后,该函数返回sum变量的值。
接下来,在主函数main中,我们定义了两个变量:n和limit。n存储指数的值,而limit存储要遍历数字的上限。
然后,我们使用一个for循环来遍历1到limit之间的数字。在循环中,我们使用armstrongSum函数来计算当前数字的各个位数的n次方之和,并将其与当前数字进行比较。如果它们相等,则打印该数字。最后,我们通过打印换行符来换行输出。
结论
通过运行上面的代码,我们得到了1到1000之间的所有阿姆斯特朗数。这个问题的关键在于编写一个函数来计算一个数字的各个位数的n次方之和,并在循环中使用它来判断数字是否为阿姆斯特朗数。