📜  Python程序计算一个数字的阶乘中的尾随零(1)

📅  最后修改于: 2023-12-03 14:46:47.101000             🧑  作者: Mango

Python程序计算一个数字的阶乘中的尾随零

阶乘中的尾随零是指一个数的阶乘后面有多少个0。在计算机科学中,这个问题被称为"计算机中的尾随零"或"数学中的尾随零"。本篇文章将介绍如何使用Python计算一个数字的阶乘中的尾随零。

思路

要计算一个数字的阶乘中的尾随零,需要先了解什么情况下会有尾随零。当一个数的阶乘的末尾有0时,显然这个数必定包含的因子中有2和5,而且因子2的数量一定比因子5多。因此,要计算尾随0的个数,我们只需要计算这个数中因子5的个数即可。

算法
  1. 新建一个计数器count,表示因子5的个数。
  2. 用一个循环,从2到n,每次循环计算当中包含的因子5的个数。
  3. 将上一步计算出的因子5的个数加到计数器count中。
  4. 返回count,即为n!中尾随0的个数。

下面是代码实现:

def trailing_zeroes(n: int) -> int:
    count = 0
    while n >= 5:
        n //= 5
        count += n
    return count
测试与结果分析

可以使用几个测试用例来检验我们的算法是否正确。

  • 测试用例1: n=5,期望输出1。因为5!=120, 末尾有一个0。
  • 测试用例2: n=10,期望输出2。因为10!=3628800, 末尾有两个0。
  • 测试用例3: n=30,期望输出7。因为30!=265252859812191058636308480000000, 末尾有7个0。
print(trailing_zeroes(5))   # 1
print(trailing_zeroes(10))  # 2
print(trailing_zeroes(30))  # 7

输出结果符合预期,说明我们的算法正确。

总结

本篇文章介绍了如何使用Python计算一个数字的阶乘中的尾随零。对于大数阶乘的计算,这个算法可以非常快速地计算出结果,而且非常简单易懂。