Python 阶乘程序

2025年6月17日 | 阅读 4 分钟

在 Python 中,阶乘程序允许我们通过将所有从 1 到该数字的整数相乘来计算一个数的阶乘。例如,4 的阶乘是 24,这是通过将 4 x 3 x 2 x 1 相乘得到的。这是一个基本的编程问题,有助于理解循环、递归等不同概念。

什么是数字的阶乘?

非负整数 n 的阶乘是指所有小于或等于 n 的正整数的乘积。

计算数字 n 的阶乘的公式是

n 的阶乘用 n! 表示。例如,

  • 5! = 5 * 4 * 3 * 2 * 1 = 120
  • 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720

这里,5! 发音为“5 factorial”。它也被称为“5 bang”或“5 shriek”。阶乘通常用于组合数学

注意:0 的阶乘始终为 1

Python 中,我们可以用多种方法编写阶乘程序。我们将在接下来的章节中探讨所有这些方法。

  • 使用循环的阶乘程序
  • 使用递归的阶乘程序
  • 使用 math.factorial() 的阶乘程序
  • 使用 numpy.prod() 的阶乘程序
  • 使用素数因数分解的阶乘程序

使用循环求数字的阶乘

在 Python 中使用循环计算阶乘时,我们将从 1 到该数字的所有数字相乘。通过这种方式,我们可以快速了解循环和基本数学是如何工作的。

示例

立即执行

输出

Factorial of 5 is 120

说明

Python 中的 for 循环用于计算给定数字的阶乘。开始时,我们将“factorial”设置为 1。之后,循环从 1 到该数字运行,每次都乘以阶乘数。循环结束后,通过输出阶乘来显示结果。

使用递归求数字的阶乘

Python 程序使用递归来计算一个数字的阶乘。该函数将该数字与其自身的先前阶乘相乘,跳过零,直到它变为 1。在这里,我们展示了 Python 如何使用递归来处理阶乘等数学任务。

示例

立即执行

输出

Factorial of 5 is 120

说明

阶乘函数被编写成不断调用自身,传入 n - 1 的值,直到 n 达到 1。我们将调用数字乘以前一次调用的阶乘。该过程持续进行,直到显示最终结果。

使用 math.factorial() 求数字的阶乘

Math.factorial() 包含在 Python 的 math 模块中,因此我们可以执行各种计算。math.factorial() 函数可以快速计算任何给定数字的阶乘,让我们能够通过简单的使用快速获得结果。

示例

立即执行

输出

Factorial of 5 is 120

说明

上面的程序导入了 math 模块,并使用 'math.factorial()' 来计算数字的阶乘。它通过跳过循环和递归来简化计算,然后直接打印阶乘结果。

使用 numpy.prod() 求数字的阶乘

此 Python 代码使用 NumPy 计算数字的阶乘。它生成从 1 到给定数字的序列,然后使用 numpy.prod() 找到它们的乘积,从而提供了一种高效的计算阶乘的方法。

示例

立即执行

输出

Factorial of 5 is 120

说明

示例程序使用 NumPy 的 'arange()' 函数 生成一个从 1 到指定整数的数组。然后使用 'numpy.prod()' 计算这些数字的乘积并打印阶乘结果。

使用素数因数分解求数字的阶乘

此代码通过识别从 2 到 n 的每个整数的素数因数来计算数字的阶乘。它维护这些因数及其幂,然后有效地将它们相乘以计算阶乘。

示例

立即执行

输出

Factorial of 5 is 120

说明

对于从 2 到给定数字的每个数字,程序都会查找素数因数,计算每个素数因数的数量,并将它们保存。它通过将每个素数相乘来完成此操作,直到其总幂,从而在不重复每次乘法的情况下得到阶乘。

结论

计算数字的阶乘是一个经典的编程练习,它强化了循环、递归和数学运算等主题。各种方法,如使用循环、递归、内置函数(如 'math.factorial()')、NumPy 的乘积函数或素数因数分解,提供了不同程度的效率和复杂性。虽然循环和递归是基础且优秀的学习工具,但在实践中,内置函数可以使过程更容易完成。素数因数分解是一种数学上有趣且高效的方法,尤其适用于大数。


下一个主题Python 比较运算符