要求:
求出0~100000之间的所有“水仙花数”并输出。
提示:
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。
分析:判断是几位数,要用这个数不断地除以10,取商
求“各位数字”要用这个数除以10,取余
本次代码要用到pow函数,pow(a,b)表示a的b次方 ,该函数需要包含对应的头文件<math.h>
#include <stdio.h>
#include<math.h>
int main()
{
for (int i = 0; i < 100000; i++)
{
int j = i;
//判断一个数是几位数
int n = 0;
while (j !=0)//除以10,取商
{
//商大于0,n+1
n++;
j = j / 10;
}
int m = i;
double sum = 0;
while (m !=0)
{
sum += pow(m % 10, n);//pow返回值的类型是double类型
//pow(a,b)表示a的b次方
//pow的使用要包含头文件
m = m / 10;
}
if (i == sum)
{
printf("%d ", i);
}
}
return 0;
}
效果: