????????变种水仙花数:把任意的数字从中间拆分成两个数字,如1461可拆分为1和461;14和61;146和1,若所有拆分后的乘积之和等于自身则是一个水仙花数。
1461=1*461?+ 14*61 + 146*1
求出5位数中的所有水仙花数。
代码示例:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 10000; i < 99999; i++)
{
int j = 0;
int sum = 0;
for (j = 1; j <= 4; j++)
{
int k = (int)pow(10, j);
sum += (i / k) * (i % k);
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
运行结果:
14610 16420 23610 34420 65500