Python 中的阿姆斯特朗数

2025 年 6 月 6 日 | 阅读 5 分钟

在 Python 中,我们经常使用阿姆斯特朗数来理解编程的各种概念,如循环、条件语句、函数和数学运算。它在逻辑构建和理解编程的迭代和递归方法方面起着重要作用。

在接下来的章节中,我们将通过示例讨论什么是阿姆斯特朗数。我们还将查看一些 Python 程序来了解如何处理阿姆斯特朗数。

什么是阿姆斯特朗数?

阿姆斯特朗数,也称为plusperfectPlus PerfectNarcissistic数,是一个 n 位正数,它等于其各位数字的 n 次幂(数字的位数)之和

换句话说,如果我们取给定数字的每个数字,将其自身乘以 n 次,然后将结果值相加,我们将得到一个数字。如果结果数字与原始数字相同,则称该数字为阿姆斯特朗数。例如,153 (13 + 53 + 33 = 1 + 125 + 27 = 153) 是一个阿姆斯特朗数。

注意:我们没有两位数的阿姆斯特朗数。

阿姆斯特朗数的通用公式可以定义为

其中 a, b, c, d 是数字的各位,而 n 是给定数字中的位数。

阿姆斯特朗数的示例

  • 370

数字的位数3

33 + 73 + 03 = 27 + 343 + 0 = 370

由于结果等于原始数字,因此 370 是一个阿姆斯特朗数。

  • 9474

数字的位数 4

94 + 44 + 74 + 44 = 6561 + 256 + 2401 + 256 = 9474

结果与原始数字匹配,因此 9474 是一个阿姆斯特朗数。

  • 9475

数字的位数 4

94 + 44 + 74 + 54 = 6561 + 256 + 2401 + 625 = 9843

9843 ≠ 9475,因此 9475 不是阿姆斯特朗数。

Python 程序检查数字是否为阿姆斯特朗数

在此 Python 程序中,我们将看到如何检查给定数字是否为阿姆斯特朗数。

示例

立即执行

输出

Enter a number: 153
153 is an Armstrong number.
Enter a number: 123
123 is not an Armstrong number.

说明

上面的示例显示了如何检查阿姆斯特朗数是否不是或是一个阿姆斯特朗数。它首先计算数字中的位数。之后,它将每个数字提高到给定数字总位数次幂,然后将结果相加。如果加法的结果与正在检查的数字相同,则它是一个阿姆斯特朗数。

因此,153 是一个阿姆斯特朗数,而 123 不是阿姆斯特朗数。

Python 程序查找给定范围内的所有阿姆斯特朗数

在此 Python 程序中,我们将看到如何查找给定范围内的所有阿姆斯特朗数。

示例

立即执行

输出

Enter start of range: 100
Enter end of range: 1000
Armstrong numbers between 100 and 1000: [153, 370, 371, 407]
Enter start of range: 5000
Enter end of range: 10000
Armstrong numbers between 5000 and 10000: [8208, 9474]

说明

这个用 Python 编写的程序可以找到指定范围内的所有阿姆斯特朗数并输出它们。它首先提示用户输入开始和结束值。之后,它使用 is_armstrong() 函数检查该范围内的每个数字。如果 is_armstrong() 对某个数字返回 true,则该数字将存储在一个列表中。程序最后打印出在该范围内找到的所有阿姆斯特朗数。

结论

在本教程中,我们通过几个例子了解了什么是阿姆斯特朗数。我们还讨论了一些 Python 程序,例如检查给定数字是否为阿姆斯特朗数以及查找给定范围内的所有阿姆斯特朗数。

Python 阿姆斯特朗数选择题

1. 哪些标准可以将一个数归类为阿姆斯特朗数?

  1. 一个数能被其各位数字之和整除。
  2. 数字的中间数乘以其平方,这将在结果中相加。
  3. 一个数的各位数字的 n 次幂等于其本身。
  4. 一个本身是回文数的数字。
 

答案:c) 一个数的各位数字的 n 次幂等于其本身。


2. 下列哪个是阿姆斯特朗数?

  1. 一百二十三,即 123
  2. 一百五十三,即 153
  3. 一百一十一,即 111
  4. 九百九十九,即 999
 

答案:b) 一百五十三,即 153 (因为 13 + 53 + 33 = 153)


3. 对于 number = 9474,以下代码返回什么?

  1. true
  2. 不正确
  3. 代码片段 错误
  4. 输入值将决定输出
 

答案: a) True


4. 这段代码的输出是什么?

  1. true
  2. False
  3. 370
  4. Error
 

答案:a) True (因为 3³ + 7³ + 0³ = 27 + 343 + 0 = 370)


5. 在 Python 中计算阿姆斯特朗数的逻辑中,短语 int(digit) ** num_digits 的作用是什么?

  1. 它将数字转换为浮点数
  2. 它将数字乘以数字的数量。
  3. 它将数字的 n 次幂计算为数字的数量。
  4. 它将数字加到数字的数量上
 

答案:c) 它将数字的 n 次幂计算为数字的数量。