打印0~100000之间的所有的水仙花数。
水仙花数:一个n位数,其各位数字的n次方之后等于该数本身,如153=1^3+5^3+3^3。
#include <stdio.h>
#include <math.h>
int bit_num(int num) //判断位数
{
//递归方法
//if (num / 10 > 0)
//{
// return 1+bit_num(num / 10);
//}
//else
// return 1;
int count = 1;
while (num / 10)
{
count++;
num = num / 10;
}
return count;
}
int main()
{
int bit = 0;
for (int i = 0; i < 100000; i++)
{
int temp = i;
int sum = 0; //sum要放在循环里面,每次都要清零。
bit = bit_num(i);
while (temp)
{
sum += pow(temp % 10, bit);
temp /= 10;
}
if (sum == i)
{
printf("%d ", sum);
}
}
return 0;
}