欢迎光临散文网 会员登陆 & 注册

Python编程算法【二十三】 阿姆斯特朗数

2022-11-06 15:55 作者:SPC编程爱好者  | 我要投稿

【案例内容】 

如果一个正整数等于其各个数字的立方和,则称该数为"阿姆斯特朗数"(亦称为自恋性数)。
如 153=1³+5³+3³ 就是一个"阿姆斯特朗数"。试编程求10000以内的所有"阿姆斯特朗数"。


【解题思路】

在第二十二题中,我们求过“水仙花数”,其实“水仙花数”就是“阿姆斯特朗数”的子集。“水仙花数”规定是3位数,而“阿姆斯特朗数”则没有规定位数。解题思路跟“水仙花数”类似,可以用常规的解法,也可以采取二十二题中,先转换成字符型str,拿到各位,再转回整型int,分别三次方后,进行求和。最后根据求和的结果即可判断是不是“阿姆斯特朗数”。在求和这一步,我们继续用累加求和的方式,便能快速得到求和后的结果了。


【Python代码】

10000以内的“阿姆斯特朗数”

我们发现10000以内找到的“阿姆斯特朗数”包含了1000以内的“水仙花数”,再次证明“水仙花数”其实就是“阿姆斯特朗数”的子集。另外,本题的解法更通用,如果需要查询更大数字范围内的“阿姆斯特朗数”,只需修改range函数里面的数值即可。

Python编程算法【二十三】 阿姆斯特朗数的评论 (共 条)

分享到微博请遵守国家法律