一.题目要求。
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
二.具体分析
首先我们要先分析一下这个数有多少位数,所以我们用count来计数。然后我们还要得到这个数的每一位数字,并且调用pow函数来计算该数的位数次方和原数进行比较即可
三.代码实现
#include <stdio.h>
#include<math.h>
int main()
{
for (int i = 0;i <= 100000;i++)
{
int count = 0;
int temp = i;
while (temp != 0)//判断这个数是几位数
{
count++;
temp /= 10;
}
temp = i;
double sum = 0;
while (temp != 0)//得到每一位的数并进行计算
{
sum += pow(temp % 10, count);
temp /= 10;
}
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}
.四.总结
实际上我们得到的并不全是水仙花数 ,而是自幂数
完!!!