求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。
//求自幂数(水仙花数)
int main()
{
for (int i = 0; i <= 100000; i++)
{
int count = 0;
int tep = i;//tep是1个临时变量,不创建临时变量,如果用i,i的值后面会发生改变,就不好写了
while (tep != 0)
{
count++;//1.求一个数字有几位数
tep /= 10;
}
//2.求和运算
tep = i;//上面的tep已经变为0,改变临时变量的值
int sum = 0;
while (tep != 0)
{
sum += pow(tep % 10, count);//求幂函数
tep /= 10;
}
//3.判断是否是自幂数
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}