求出0~999999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身。在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数, 其各个数之N次方和等于该数。
今天这道题真是让我头发都掉光了,真是不堪回首,具体思路我就写在程序备注了供大家参考了,真的想到头秃了QAQ。
#include<stdio.h>
#include<math.h>
int main()
{
int i
= 1;
for (i
= 1; i
<= 999999; i
++)
{
int count
= 0, a
= 0,sum
=0;
a
= i
;
while (a
!= 0)
{
a
= a
/ 10;
count
++;
}
a
= i
;
while (a
!= 0)
{
sum
+= pow((double)(a
%10), (double)count
);
a
= a
/ 10;
}
if (sum
== i
)
{
printf("%d\n", i
);
}
}
return 0;
}
这道题主要是要用好循环,以及每一位数的运算。有一点需要注意的是在调用pow函数的时候需要用math.h的头文件,而且在使用pow函数的时候需要把参数类型强制转换为double。