水仙花数是指一个数等于它每一位数的三次方之和。
比如:
153 = 1*1*1 + 5*5*5 + 3*3*3。153就是一个水仙花数。
要得到一个数的每一位数,可以使用循环或者递归的方式,将每一位数用模和除的方式得出来。
最后将每一位数的值的三次方加起来,判断是否与这个数相等,就能判断这个数是不是水仙花数。
如代码所示:
#include <stdio.h>
int ss(int i)
{
if (i <= 9)
{
return i * i * i;
}
else
{
return (i % 10) * (i % 10) * (i % 10) + ss(i / 10);
}
}
void flower(int n)
{
int i = 0;
for (i = 1; i <= n; i++)
{
int h = ss(i);
if (i == h)
{
printf("%d ", i);
}
}
}
int main()
{
int n = 0;
scanf("%d", &n);
flower(n);
return 0;
}
如果输入一千就会得到以下结果: