水仙花数
水仙花数是指一个n位正整数(n≥3),它的每个位上的数字的n次幂之 和等于它本身。水仙花数也是一种 具有特殊性质的数。
什么是水仙花数
水仙花数最先是由英国数学家哈代(G.H.Hardy) 发现的。他发现一些三位数满足如下奇特的现象:
153=1³+5³+3³
370=3³+7³+0³
371=3³+7³+1³
407=4³+0³+7³
简单地说,这些三位正整数在数值上等于其各位数字的立方之和(即3次幂之和)。哈代称为“水仙花数”。
四位的水仙花数有如下3个:(四位数,n在此时是4)
1634=14ⁿ+64ⁿ+3ⁿ+4ⁿ
8208=8ⁿ+2ⁿ+0ⁿ+84ⁿ
9474=9ⁿ+4ⁿ+7ⁿ+4ⁿ
数学家在理论.上证明,最大的水仙花数不超过34位。因此,水仙花数是有限的。这种推广的水仙花数有时也称为阿姆斯特朗数。不同位数的水仙花数的个数如下:
●三位水仙花数:共4个;
●四位水仙花数:共3个;
●五位水仙花数:共3个;
●六位水仙花数:共1个;
.七位水仙花数:共4个;
●八位水仙花数: 共3个;
●九位水仙花数:共4个;
●十位水仙花数:共1个;
…
做题思路:
输入参数n表示需要查找的水仙花数的位数。
首先计算起此据和终止数据,然后对所有数据逐个判断。
在进行判断时将数据的各个位分离出来,并逐位进行n次幂的累加。
最后判断累加的数是否与原来的数相等,输出即可;
(1)计算数据num的个位数,并将其赋值给temp。
(2)计算个位数的n次幂,并累加到sum中。
(3) 移位操作,将num减去个位数temp后,再除10,便相当于*数据的右移操作。此时减少一位,并将结果重新赋值给num。
(4) 重复步骤(1)的操作,直到所有的位数都得到处理为止。
这样便分离出了n位的数字并得到了其”次幂的累加和。**
代码如下:
public static void main(String[] args)