判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?
作者:野牛程序员: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; }
解释:
isArmstrong
函数:该函数接收一个整数,并检查它是否为阿姆斯特朗数。通过将数字的每一位取出并求其n次方,再将这些值加起来,最后与原数字进行比较。main
函数:该函数遍历所有三位数,并利用isArmstrong
函数检查每个数字是否为水仙花数。对于水仙花数,会打印出来。
输出:
程序将输出所有的三位数水仙花数,如:
三位数的水仙花数有: 153 370 371 407
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
