
/**
*功能:无尽的水仙花数
*编译器:mingw g++ 6.3
*@fencaide
*/
#include
#include
#define M_P 10
int Pow(int sub, int n){
int sum = 1;
if(n == 0)
return 1;
for(int m =0 ; m < n ; m++){
sum *= sub;
}
return sum;
}
int isFlower(int num){
int pieces = 0;
int a[M_P] = { 0 };
while(1){
int p = Pow(10, pieces + 1);
int mod = num % p;
if(p/10 > num)
break;
else{
a[pieces+1] = mod/Pow(10, pieces);
}
pieces++;
}
int sum = 0;
for(int i =1; i <= pieces; i++){
sum += Pow(a[i], pieces);
}
if(num == sum)
return 1;
else
return 0;
}
int main(void)
{
int max = 0;
printf("please input max range of numbers:");
scanf("%d",&max);
for(int i = 1 ; i < max ; i++){
if(isFlower(i)){
printf("%d is a flower number!\n",i);
}
}
getchar();
getchar();
return 0;
}