一个三位数,它的个位的立方加上十位的立方再加上百位的立方等于这个数本身的话,此数叫作水仙花数.如:某三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。下面我提供两种方法打印水仙花数。
1.下面这个代码是比较好理解的,直接从水仙花的定义,结构a^3+b^3+c^3=abc入手,分别定义个位、十位、百位构造水仙花数。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i, j, k; int a;//j,j,k分别表示水仙花数的百位,十位,个位;a表示水仙花数
for (i = 0; i <= 9; i++)
{
for (j = 0; j <= 9; j++)
{
for (k = 0; k <= 9; k++)
{
a= k + j * 10 + i * 100;
if (a==i*i*i+j*j*j+k*k*k&& a>=100)
printf("%d\n", a);
}
}
}
system("pause");
return 0;
}
2.下面的这个代码是由三位数分别计算他的个位、十位、百位,在来判断他是否为水仙花数,也是比较好理解的
#include <stdio.h>
#include <stdlib.h>
int Isshuixianhua(int num)//num为需要判断是否为水仙花数的整数
{
int x1 = num % 10;//除以10的余数=>个位
int x2 = (num / 10) % 10;//=>十位
int x3 = (num/ 100)%10;//=>百位
if (x1*x1*x1 + x2*x2*x2 + x3*x3*x3 == num)
return num;
else
return 0;
}
int main()
{
int X=100;
for (X = 100; X < 1000; X++)
{
if (Isshuixianhua(X) != 0)
printf("%d\n", Isshuixianhua(X));
else
continue;
}
system("pause");
return 0;
}