#include<stdio.h>
#include <math.h>
int main()
{
int i=0;
for(i=1;i<=1000;i++)
{
int n=1;//n默认一位数
int tmp=i;
while(tmp/=10)
{
n++;//这里判断n为几位数
}
tmp=i;
int sum=0;
while(tmp)
{
sum+=pow(tmp%10,n);
//运用函数pow求每个数的n次方
tmp/=10;
}
if(i==sum)//判断是否相等
printf("%d ",i);
}
return 0;
}
自幂数是每个数的次方数相加等于本身
举个例子
153=1的3次方+5的3次方+3的3次方
几位数就为几次方
总体思路,先判断一个数为几位数,求出n的值,然后先模10得到个位数,再n次方,接着再除以10模10得到10位数的n次方,以此类推。
重点理解 要分开判断 再打印。