自幂数:如153 1^3+5^3+3^3 = 153称自幂数(三位数的自幂数也称水仙花数)
求0-10000的自幂数思路:
①、for循环遍历0-10000
②、求遍历到的这个数的位数
③、分解这个数,求这个数的每一位数,并求每一位数的位数方之和是否等于这个数,等于即自幂数
#include<stdio.h>
#include<math.h>
int main()
{
int i = 125;
for (i = 0; i <= 10000; i++)//遍历0-10000
{
int t = i;//防止i被改变
int n = 0;//统计t的位数
while (t)
{
t /= 10;
n++;
}
t = i;
int a = 0;
int sum = 0;
while (t)
{
a = t % 10;
sum += pow(a, n);//计算每位数的n次方
t /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}