【编程基础】利用 Python 实现阿姆斯特朗数的求解
前言
阿姆斯特朗数是什么?
阿姆斯特朗数是数学中的一个概念,多用于计算机语言编程。他的定义是:一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数,又称为自恋性数,当 n=3 时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。所以很多时候阿姆斯特朗数也称为水仙花数,水仙花数也是我们接触比较多的叫法。
只讲概念可能会一头雾水,咱们继续看一个例子:
比如:153 这个数字,这是个 3 位数,那它每个位上的数字的 3 次方之和等于它本身,他就是阿姆斯特朗数或者水仙花数:1^3+5^3+3^3=153
我们再来做个对比:比如我们这次输入的数字是 132,那这个数是阿姆斯特朗数吗?下面我们来计算看看是否符合我们上面所说的定义就知道:
132 是 3 位数,那么 1^3+3^3+2^3=38,显然不等于 132,所以 132 不是阿姆斯特朗数
寻找这样的数太废手,接下来我们用 Python 代码来计算一个数是否阿姆斯特朗数.
寻找阿姆斯特朗的方法
穷举法
因为阿姆斯特朗数的出现没有一定的规律.所以我们使用穷举法进行寻找.穷举法的基本思想是根据题目部分条件确定答案的大致范围,并在这个范围内对所有可能的情况逐一验证,直到全部情况验证完毕.如果某个验证符合题目的全部条件,则为本问题的一个解,如果全部验证都不符合题目的全部条件,则本题无解.所以当答案范围越来越大时,需要耗时较长.这种方法也是比较直接且简单粗暴的做法.
涉及到的 Python 内容
从上面的概念可以得到.我们计算阿姆斯特朗数,需要知道每个数的位数.所以在实现的过程中会使用到 Python 的 len()函数获取输入数字的长度,也就是数字的位数,len()方法可以返回对象(包括字符串,列表,元组等)的长度或项目个数
我们输入的是一个整数;要计算一个数字的长度.我们需要先将数字,转为字符串,这时候我们会使用到 str()函数,这个函数就是把对象类型转换为字符串类型
实现流程
比如我们现在要求 100-1000 的阿姆斯特朗数,我们根据题目给出的范围展开分析实现流程
输入最小值 min 和最大值 max
根据最大最小值.确定范围,建立 for 循环
使用 len()计算数字位数
建立 while 循环,按照定义计算数字
判断上一步计算出来的数字是否与原来的数字相等
输出符合阿姆斯特朗数条件的数字
代码实现
根据上面的流程,进行代码的实现:计算 100-1000 内的阿姆斯特朗数
执行结果如下:
版权声明: 本文为 InfoQ 作者【迷彩】的原创文章。
原文链接:【http://xie.infoq.cn/article/85c3f51fbe90339ce00979417】。文章转载请联系作者。
评论