Python编程算法【二十三】 阿姆斯特朗数
【案例内容】
如果一个正整数等于其各个数字的立方和,则称该数为"阿姆斯特朗数"(亦称为自恋性数)。
如 153=1³+5³+3³ 就是一个"阿姆斯特朗数"。试编程求10000以内的所有"阿姆斯特朗数"。
【解题思路】
在第二十二题中,我们求过“水仙花数”,其实“水仙花数”就是“阿姆斯特朗数”的子集。“水仙花数”规定是3位数,而“阿姆斯特朗数”则没有规定位数。解题思路跟“水仙花数”类似,可以用常规的解法,也可以采取二十二题中,先转换成字符型str,拿到各位,再转回整型int,分别三次方后,进行求和。最后根据求和的结果即可判断是不是“阿姆斯特朗数”。在求和这一步,我们继续用累加求和的方式,便能快速得到求和后的结果了。
【Python代码】

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