水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13 53 33。
下面是一个C++程序,用于计算所有N位水仙花数:
#include #include
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;
}
该程序的主要流程如下:
定义一个函数isNarcissisticNumber,用于判断一个数是否为水仙花数。该函数的参数为一个整数n。
在函数内部,初始化一个变量sum,用于存储各位数字的N次幂之和。
初始化一个变量tmp,用于存储n的值。
初始化一个变量cnt,用于存储n的位数。
使用一个循环,不断除以10,统计n的位数。
将tmp赋值为n,用于计算各位数字的N次幂之和。