一个m位数n,其中每一位上的数字的m次方之和等于n,则n为一个自幂数。
例如
#include<stdio.h>
int digits(int a);//位数判断
int narcis(int a);
int power(int a,int b);//求次方
int main()
{
int m,i,d;
printf("请输入要求到的位数");
scanf("%d",&m);
printf("%d位以内自幂数有:",m);
i=narcis(m);
printf("\n");
printf("共%d个",i);
}
int narcis(int a)
{
int i,d,c[10],n,j,s,z,k,b[10],sum,count=0;
a=power(a,10);
for(i=0;i<a;i++)
{
n=i;
j=i;
d=digits(i);
b[0]=n%10;
for(s=1;s<d;s++)
{
n=n/10;
b[s]=n%10;
}
for(z=0;z<d;z++)
{
c[z]=power(d,b[z]);
}
sum=0;
for(k=0;k<d;k++)
{
sum=sum+c[k];
}
if(sum==j)
{
count++;
printf("%d ",j);
}
}
return count;
}
int digits(int a)
{
int d=1;
while(a>=10)
{
a=a/10;
d++;
}
return d;
}
int power(int a,int b)//a是指数,b是底数
{
int i,c;
c=b;
for(i=1;i<a;i++)
{
b=b*c;
}
return b;
}