实现思路:
1.先确定数的位数n(千万不能拿i 去 i /= 10)
2.计算每一位的n次方之和 sum
3.判断 sum == i
注意:pow的返回值为double,应该强制类型转换
如果使用库函数的pow()函数记得引头文件#include<math.h>
#include<stdio.h>
#include<math.h>
//C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 x^y。
//实现水仙花数(自幂数)
double my_pow(int n,int k){
if(k > 0){
return n * my_pow(n,k-1);
}
else if(k == 0)
return 1;
else
return 1.0 / ( n*my_pow(n,-k) );
}
int main(){
int i = 0;
for(i=0;i<1000000;i++){
//1.确定位数 n
int n =0;
int temp = i;
int sum=0;
while(temp){
n++;
temp /=10;
}
//计算每一位的n次方和 sum
temp = i;
while(temp){
sum += (int)my_pow(temp%10, n) ;
temp /=10;
}
// 判断 sum == n
if(sum == i)
printf("%d ",i);
}
printf("\n");
return 0;
}