1,题目描述:写一个代码打印1-100000之间所有的自幂数,中间用空格分隔。
2,明确概念:
注意:水仙花数本身是指一个三位数。
3,解法思路:
1)计算在1-100000序列中的位数n;
2)计算每一位数的n次方之和sum;
3)计算sum与该序列中判断的数字是否相等。
4,运行代码:
#include <stdio.h>
#include <math.h>
int main()
{
int i=0;
for(i=1;i<=100000;i++)
{
int n=1;
int temp=i;
//计算i的位数n
//注意这里是temp/10来判断位数,若用temp%10则多一位
while(temp/10!=0)
{
n++;
temp=temp/10;
}
//计算每一位的n次方之和
//
temp=i;
int sum=0;
while(temp!=0)
{
sum+=pow(temp%10,n);
temp=temp/10;
}
if(sum==i)
printf("%d ",i);
}
return 0;
}
5,运行结果:
以上编译环境均为Dev-c++。
若有问题,欢迎各位小伙伴和我一起探讨喔!