从1乘到100等于多少末尾有几个零


从1乘到100,也就是100的阶乘(100!),结果的末尾有多少个零? 这其实是一个挺有趣的问题,它考察的是你对质因数分解和一些数学小技巧的理解。

直击核心:末尾的零怎么来的?

一个数末尾的零,本质上是它能被10整除多少次。而10可以分解成2和5的乘积 (10 = 2 × 5)。 所以,我们只需要找出100! 中有多少个2和5这两个质因数。由于2出现的频率远高于5,所以末尾零的个数实际上取决于5的个数。

简单粗暴法:数一数有多少个5

让我们从1数到100,看看有多少个数字可以被5整除:

5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100

一共有20个。 这意味着至少有20个5作为质因数。

进阶思考:别忘了“超级5”

注意到,有些数字不止包含一个5! 比如25 (25 = 5 × 5), 50 (50 = 2 × 5 × 5), 75 (75 = 3 × 5 × 5) 和 100 (100 = 2 × 2 × 5 × 5)。它们贡献了额外的5。

25, 50, 75, 100 这四个数字,每一个都贡献了 额外的一个 5。 所以,我们还要加上4个5。

总结一下:

  • 能被5整除的数:20个
  • 能被25 (5²) 整除的数:4个
  • 能被125 (5³) 整除的数:0个 (因为没有大于等于125且小于等于100的数)

因此,100! 中5的个数是 20 + 4 = 24。

结论:

100! 的末尾有 24 个零。

公式化表达:

更一般地,要求n!末尾有多少个零,可以用下面的公式:

⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + ⌊n/625⌋ + …

其中 ⌊x⌋ 表示向下取整,即小于或等于x的最大整数。 这个公式巧妙地考虑了所有包含5、25、125…等5的幂的倍数的贡献。

举一反三:

如果问 200! 末尾有多少个零呢?

套用公式:

⌊200/5⌋ + ⌊200/25⌋ + ⌊200/125⌋ = 40 + 8 + 1 = 49

所以,200! 末尾有 49 个零。

编程角度:

用 Python 来计算也很方便:

“`python
def trailing_zeros(n):
count = 0
i = 5
while n // i >= 1:
count += n // i
i *= 5
return count

print(trailing_zeros(100)) # 输出 24
print(trailing_zeros(200)) # 输出 49
“`

这段代码简洁高效地完成了计算。

希望以上分析能够帮助你彻底理解这个问题!


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注