//求0-100000之间的"水仙花数”并输出,
// 正确的“水仙花数”其实是一个3位数,在这里我们不限制它的位数:
//定义“水仙花数”是指一个n位数,其各个位的数字的n次方的和为它本身,
//例:153是一个3位数,153=1^3+5^3+3^3,则153即为一个水仙花数
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,sum,count;
for (i = 1; i < 100000; i++)
{
count = 0; //初始位数为0
j = i; //为了不让i值改变,另取一变量j使j等于i
while (j ) //当j不等于0的时候则循环继续(j不等于0,则为真,循环继续),
当j=0使则为假,循环结束
{
j /= 10;
count++;
}
j = i; //此前j已变成个位数,应重新初始化
sum = 0;
while (j)
{
sum += pow(j % 10, count); //运用幂函数,可以很方便的计算出来
j /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}