水仙花数的计算算法

水仙花数

水仙花数是指一个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)
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值