c语言—水仙花数
- 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)
- 水仙花数指的是一个n位数(n>=3),他的每一个位上的数字的n次幂之和等于他的本身,求出所有的三位数的水仙花数
- 例如:1^3 + 5^3+ 3^3 = 153
方法一:
先遍历0~999然后拆出每一个数的个位、十位、百位,最后求三次幂之和是否为此数
#include<stdio.h>
int main()
{
int a, b, c,i;
for (i = 0; i < 999; i++){
a = i / 100; //取个位数字
b = i / 10 % 10; //取十位数字
c = i % 10; //取百位数字
//判断这个数三次幂之和是否等于它本身
if (a*a*a + b*b*b + c*c*c == i){
printf("%d ", i);
}
}
return 0;
}
运行结果:

方法二:
利用三个循环
#include<stdio.h>
#include<math.h>
int main()
{
int i, a, b, c;
for(a=0;a<=9;a++)//取百位数字
{
for (b = 0; b <= 9; b++)//取十位数字
{
for (c = 0; c <= 9; c++)//取个位数字
{
i = a * 100 + b * 10 + c;//计算出这个数
//判断这个数三次幂之和是否等于它本身
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
printf("%d ", i);
}
}
}
return 0;
}
运行结果:

pow(x,y)
数学函数,表示x的y次方,使用此函数必须加头文件#include <math.h>
3882

被折叠的 条评论
为什么被折叠?



