水仙花数的定义
设有自然数n,d为该自然数各位数字,即 n = dkdk-1…d1 ,则有:
n = dk·10k-1 + dk-1·10k-2 + … + d2·10 + d1,
如果该自然数n满足条件:
n = dkk + dk-1k + … + d2k + d1k.
则这个自然数就被称为超完全数字不变数。 例如153、370、371及407就是三位超完全数字不变数,其各个数之立方和等于该数:
153 :1 5 3。
370 :3 7 0。
371 :3 7 1。
407 :4 0 7。
若将条件放宽,一个N位数,其各个数之M次方和等于该数,M和N不一定相等,这样的数称为完全数字不变数(perfect digital invariant)[5][2],例如数字4150等于各位数字的5次方。
4150 :4 1 5 0,
水仙花数一定是完全数字不变数,但完全数字不变数不一定是水仙花数。 严格意义来说水仙花数指三位数。
//水仙花指100到999
int i,x,y,z;//x代表百位,y代表10位,z 代表个位
for (i = 100; i < 1000; i++)
{
x = i / 100;//利用整型取整,后面小数自动舍去
y = i %100/ 10;//
z = i % 10;//取10的余为个位数
if (i ==( x * x*x) +( y * y*y) +( z * z*z))
printf("%d\n",i);
}
system("pause");
运行后结果如下