判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?
作者:野牛程序员:2025-02-25 10:40:01C++阅读 2392
判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?
判断给定的正整数是否为阿姆斯特朗数,并打印所有三位数的水仙花数?
如果一个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

