求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
#include<stdio.h>
#include<math.h>
int bit(int n)
{
int c = 1;
while (n/10)
{
n = n / 10;//把n/10的值赋给n,循环继续直到n为0为止循环结束
c++;//每循环一次c++循环多少次n就是几位数
}
return c;
}
int main()
{
int a ;
int sum=0;
for (a = 0; a <= 100000; a++)
{
int sum = 0;//sum初始值为零
int t = a;
int ret = bit(t);//算出t是几位数
while (t != 0)
{
int i = t % 10;//先计算t的余数
t = t / 10;//把n/10的值赋给n,循环继续直到n为0为止循环结束
sum = sum + pow(i, ret);//把每一次t的余数的ret次方进行相加
}
if (sum == a)//如果把每一次t的余数的ret次方相加的值跟a相等
{
printf("%d是水仙花数\n", sum);
}
}
return 0;
}
最后运算结果是: