自幂数:⾃幂数是指⼀个数的位数的n次⽅等于这个数本⾝。
例如: 153=1^3+5^3+3^3这就是一个自幂数。
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 1; i <= 100000; i++)
{
int n = 1;
int a = i;
while (a / 10)//判断n的位数
{
n++;
a /= 10;
}
a = i;
int sum = 0;
while (a)
{
sum += (int)pow(a % 10, n);//每一位n次方相乘再相加
a /= 10;
}
if (sum == i)//判断是否相等
{
printf("%d ", sum);
}
}
return 0;
}
结果:
解析:
1.首先介绍一个函数pow pow的用法是pow(a,b)返回值是a的b次方,需要包含头文件math.h
2.由于1-100000有不同位数的数字,所以要先判断数据的位数确定n到底是多少次方
3.第二步只需要把每一位 拆解 n次方 再相加 储存在一起 笔者这里使用sum
4.最后再进行是否相等的判断,打印数据即可