水仙花数指的是一个n位数(n>=3),他的每一个位上的数字的n次幂之和等于他的本身,求出所有的三位数的水仙花数。
方法一:
先遍历100~999然后拆出每一个数的个位、十位、百位,最后求三次幂之和是否为此数
#include<stdio.h>
#include<math.h>
int main()
{
int i, a, b, c;
for (i = 100; i <= 999; i++)
{
a = i % 10;//取个位数字
b = i / 10 % 10;//取十位数字
c = i / 100;//取百位数字
if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
printf("%d ", i);
}
return 0;
}
方法二:利用三个循环
#include<stdio.h>
#include<math.h>
int main()
{
int i, a, b, c;
for(a=1;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;
}
运算结果:
更多推荐
C语言计算水仙花数的两种方法
发布评论