当前位置:首页C++ > 正文

判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?

作者:野牛程序员:2025-02-25 10:40:01C++阅读 2130
判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?

判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153 当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。 水仙花数共有4个,分别为:153、370、371、407。 

以下是一个用C++编写的程序,判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数:

#include <iostream>
#include <cmath>
using namespace std;

// 判断一个数字是否为阿姆斯特朗数
bool isArmstrong(int num) {
    int sum = 0, temp = num, n = 0;

    // 计算数字的位数
    while (temp != 0) {
        n++;
        temp /= 10;
    }

    temp = num;
    // 计算各位数字的n次方之和
    while (temp != 0) {
        int digit = temp % 10;
        sum += pow(digit, n);
        temp /= 10;
    }

    // 判断是否为阿姆斯特朗数
    return sum == num;
}

int main() {
    cout << "三位数的水仙花数有:\n";
    // 只考虑三位数
    for (int i = 100; i <= 999; i++) {
        if (isArmstrong(i)) {
            cout << i << endl;
        }
    }

    return 0;
}

解释:

  1. isArmstrong 函数:该函数接收一个整数,并检查它是否为阿姆斯特朗数。通过将数字的每一位取出并求其n次方,再将这些值加起来,最后与原数字进行比较。

  2. main 函数:该函数遍历所有三位数,并利用 isArmstrong 函数检查每个数字是否为水仙花数。对于水仙花数,会打印出来。

输出:

程序将输出所有的三位数水仙花数,如:

三位数的水仙花数有:
153
370
371
407


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?
  • 相关推荐

    最新推荐

    热门点击