C++程序 打印1到1000的阿姆斯特朗数

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中,我们定义了两个变量:nlimitn存储指数的值,而limit存储要遍历数字的上限。

然后,我们使用一个for循环来遍历1到limit之间的数字。在循环中,我们使用armstrongSum函数来计算当前数字的各个位数的n次方之和,并将其与当前数字进行比较。如果它们相等,则打印该数字。最后,我们通过打印换行符来换行输出。

结论

通过运行上面的代码,我们得到了1到1000之间的所有阿姆斯特朗数。这个问题的关键在于编写一个函数来计算一个数字的各个位数的n次方之和,并在循环中使用它来判断数字是否为阿姆斯特朗数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例