水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数
时间: 2023-10-29 15:48:24 浏览: 130
水仙花数是指一个 n 位数(n ≥ 3),它的每个位上的数字的 n 次幂之和等于它本身 例如,153 是一个水仙花数,因为 1^
水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13 53 33。
下面是一个C++程序,用于计算所有N位水仙花数:
#include <iostream>
#include <cmath>
using namespace std;
// 函数:判断一个数是否为水仙花数
bool isNarcissisticNumber(int n)
{
int sum = 0;
int tmp = n;
int cnt = 0; // 记录n的位数
// 统计n的位数
while (tmp > 0)
{
cnt++;
tmp /= 10;
}
// 计算各位数字的N次幂之和
tmp = n;
while (tmp > 0)
{
int d = tmp % 10;
sum += pow(d, cnt);
tmp /= 10;
}
return n == sum;
}
int main()
{
for (int n = 100; n < 1000; n++)
{
if (isNarcissisticNumber(n))
{
cout << n << " ";
}
}
return 0;
}
该程序的主要流程如下:
1. 定义一个函数isNarcissisticNumber,用于判断一个数是否为水仙花数。该函数的参数为一个整数n。
2. 在函数内部,初始化一个变量sum,用于存储各位数字的N次幂之和。
3. 初始化一个变量tmp,用于存储n的值。
4. 初始化一个变量cnt,用于存储n的位数。
5. 使用一个循环,不断除以10,统计n的位数。
6. 将tmp赋值为n,用于计算各位数字的N次幂之和。
阅读全文