求出0-100000之间所有“水仙花数”并输出
“水仙花数”是指一个n位数,其各位数字的n次方之和恰好等于该数本身,如153=1^3 + 5^3 +3^3,则153是一个“水仙花数”
#include<stdio.h>
#include<math.h>
int sxh(int i)//如果是水仙花返回1,否则返回0
{
//先判断是n位数
int tmp = i;
int n = 0;
int sum = 0;
while (i)
{
i /= 10;
n++;
}
i = tmp;//后面tmp也是要被用掉的,这里重新复制一下i
while (tmp)
{
sum += pow(tmp % 10, n);//pow(a,b)表示a的b次方,这个函数需要引用头文件math.h
tmp /= 10;
}
if (sum == i)
{
return 1;
}
return 0;
}
int main()
{
int i = 0;
for (i = 0;i < 100000;i++)
{
if (sxh(i) == 1)
{
printf("%d\n", i);
}
}
return 0;
}