Python 中的强数

17 Mar 2025 | 5 分钟阅读

在本教程中,我们将学习一个 Python 程序来判断给定的数字是强数还是非强数。

什么是强数?

强数是一种特殊的数字,其中所有数字的阶乘之和等于数字本身。

要判断一个给定的数字是否是强数,我们从给定的数字中提取每一位数字,计算其阶乘,然后对数字的每一位都这样做。

一旦我们得到所有数字的阶乘,我们就将它们相加。如果和等于给定的数字,那么该数字就是强数,否则不是。

例如 - 给定的数字是 145,我们需要提取每一位数字并计算其阶乘:1! = 1,4! = 24,5! = 120。

现在,我们将阶乘相加,得到 1 + 24 + 120 = 145,这与给定的数字完全相同。所以我们可以说 145 是一个强数。

我们已经得到了强数的逻辑。现在使用 Python 程序来实现它。

问题处理方法

  1. 要求用户输入一个整数。
  2. 使用两个 while 循环计算数字中每一位数字的阶乘。
  3. 现在,将所有阶乘数字相加。
  4. 检查它是否等于给定的数字。
  5. 打印输出。
  6. 退出

示例输入: num = 132

示例输出: 给定的数字不是强数

解释: 1! + 3! + 2! = 9,不等于 132

示例输入: num = 145

示例输出: 给定的数字是强数。

Python 程序查找强数

下面是打印给定数字是强数还是非强数的 Python 程序代码。

示例 -

输出

Enter a number: 145
Given number is a strong number.

说明

在上面的代码中

  • 我们声明一个名为 num 的整型变量来输入数字。
  • 将 sum 变量初始化为零。
  • 将 num 的值复制到 temp 变量。
  • 第一个 while 循环确保给定的数字大于 0。
  • 在 while 循环内部,分离数字并将变量分配用于计算每个数字的阶乘。
  • 在第二个 while 循环(嵌套 while 循环)中,计算每个数字的阶乘。

假设用户输入的值 = 145,sum = 0

初始化赋值

现在理解循环迭代。第一次迭代

现在,我们进入嵌套的 while 循环。它计算 5 的阶乘是 120。

第二次迭代

现在,它进入嵌套的 while 循环。在这里,它计算 4 的阶乘 = 24。

第三次迭代

1 的阶乘是 1

此时, temp = 0,因此 while 循环条件失败。

If (num == sum) 现在,我们检查条件,看用户输入的数字是否与 sum 完全相等。如果此条件返回 True,则它是强数,否则不是强数。

我们已经使用 while 循环完成了程序。我们也可以使用 for 循环来判断一个给定的数字是否是强数。

使用 for 循环的强数

我们也可以使用 for 循环来查找强数。逻辑与上述程序相同,只是将 while 循环替换为 for 循环。

示例 -

输出

Enter the Number:145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1
Sum of Factorials of a Given Number 145 = 145
The given number is a Strong Number

使用阶乘函数查找强数的 Python 程序

Python math 模块提供了内置的 math 模块。通过使用此方法,我们可以省略使用 嵌套 while 循环

示例 -

输出

Enter the Number: 145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1

 Sum of Factorials of a Given Number 145 = 145
 The given number is a Strong Number

解释 -

在上面的代码中,

  • 我们使用了 factorial() 函数,并将余数作为参数传递。
  • 在 while 循环的第一次迭代中,它返回余数 5 并将其传递给 5 的阶乘。
  • 它将继续进行,直到 temp 值大于零。我们不需要使用另一个 while 循环。