首先明确什么是水仙花数:即一个数的每一位求这个数的位数次幂的和恰好等于这个数,即为水仙花数
#include<stdio.h>
#include<math.h>
int main()
{
//循环找出10000000以内的所有水仙花数
int i = 0;
for(i=0;i<10000000;i++){
//1,确定一个数是几位数
//2,得到每一位数
int count = 1;//如果count从0开始计数,则会少计一位
int tmp = 0;
int sum = 0;
tmp = i;
while(tmp/10){
count++;
tmp=tmp/10;
}
//while循环内会改变循环变量i的值,所以要用tmp代替i来运算
tmp = i;
while(tmp){
sum = sum+pow(tmp%10,count);//用到了pow函数
tmp = tmp/10;
}
if(sum==i){
printf("%d ",i);
}
}
return 0;
}