水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
首先,先把我们的思路大概想好,分为以下几步:
1.我们要求的是0-10w内的水仙花数,那就要用到循环 2.求i这个数字的位数 3.把这个多位数每位的数分解然后各自求三次方然后求和 4.判断
#include<stdio.h>
#include<math.h>
int main()
{
for(i=0;i<100000;i++)
{
int n=i;
int num=1;//num为多位数的位数
while(n/10)
{
num++;//计算位数
n=n/10;
}
n=i;//重置n,防止死循环
int sum=0;
while(n)
{
sum=sum+pow(n%10,num);//计算各位数三次方的和
n=n/10;
}
if(sum==i)
printf("%d ",i);
}
return 0;
}
结果如下:
0 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084