写点什么

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

作者:迷彩
  • 2022 年 9 月 26 日
    广东
  • 本文字数:1074 字

    阅读完需:约 4 分钟

前言

阿姆斯特朗数是什么?

阿姆斯特朗数是数学中的一个概念,多用于计算机语言编程。他的定义是:一个 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. 输出符合阿姆斯特朗数条件的数字


代码实现

根据上面的流程,进行代码的实现:计算 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)
复制代码

执行结果如下:


发布于: 刚刚阅读数: 6
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020.06.18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【编程基础】利用Python实现阿姆斯特朗数的求解_Python_迷彩_InfoQ写作社区