水花仙数,也叫自幂数,n位数的每位的n的阶乘相加等于自身,叫自幂数。c语言会把3位数的水仙花数扩展到自幂数,不再只是3位,也可以是1位,2位,等等。
求解0到100000的水仙花数,先求解位数,接着取余,余数再用函数pow函数求他的n的阶乘,再累加。可以用函数写,也可以不用
pow函数计算n的k次方,头文件math.h
int main()
{
int i = 0;
for (i = 0; i < 1000000; i++) 产生0到1000000个数
{
int tmp = i;
int count = 1;
int sum = 0;
判断数字的位数
while (tmp/10) 234
{
count++;
tmp /= 10;
}
计算每一位的的次方和
tmp = i;
while (tmp)
{
sum += pow(tmp % 10, count);
tmp /= 10;
}
if (sum == i) 判断是否为水仙花数
{
printf("%d ", i);
}
}
return 0;
}