从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
“`
这段代码简洁高效地完成了计算。
希望以上分析能够帮助你彻底理解这个问题!