//输出m,n之间所有的水仙花数
#include <stdio.h>
#include <math.h>
int count(int);
int sum(int[],int);
void judge(int,int);
int main()
{
int x,i,m,n,j;
printf("please input the number:\nm=");
scanf("%d",&m);
printf("please input the number:\nn=");
scanf("%d",&n);
for(j=m;j<=n;j++)
{
i=count(j);
judge(j,i);
}
return 0;
}
void judge(int x,int i)//判断是否是水仙花
{
int m[10],ss,x1,j;
x1=x;
j=i;
while(i--)
{
m[i]=x%10;
x=x/10;
}
ss=sum(m,j);
if(x1==ss)
{
printf("%d\t\n",x1);
//
c=c+1;
}
}
int sum(int m[],int n)//将数组中存放的各位求幂并相加
{
int i;
int y=0;
for(i=0;i<n;i++)
{
y=y+(int)(pow(m[i],n));
}
return y;
}
int count(int n)//判断位数函数
{
int i=0;
while(n>0)
{
n=n/10;
i++;
}
return i;
}