前言

阿姆斯特朗数是什么?

阿姆斯特朗数是数学中的一个概念,多用于计算机语言编程。他的定义是:一个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的阿姆斯特朗数,我们根据题目给出的范围展开分析实现流程

  1. 输入最小值min和最大值max
  2. 根据最大最小值.确定范围,建立for循环
  3. 使用len()计算数字位数
  4. 建立while循环,按照定义计算数字
  5. 判断上一步计算出来的数字是否与原来的数字相等
  6. 输出符合阿姆斯特朗数条件的数字

【编程基础】利用Python实现阿姆斯特朗数的求解_阿姆斯特朗数

代码实现

根据上面的流程,进行代码的实现:计算100-1000内的阿姆斯特朗数

min = int(input("请输入最小值:"))
max = int(input("请输入最大值:"))

for num in range(min,max):
sum = 0
n = len(str(num)) #计算位数并赋值给n
temp = num #定义临时变量,用于后续计算
while temp > 0: #计算每一位数字值然后累加
digit = temp % 10
sum += digit ** n
temp //= 10
if sum == num:
print(num)

执行结果如下:

【编程基础】利用Python实现阿姆斯特朗数的求解_阿姆斯特朗数_02