问题
100的阶乘(100!
)中的末尾有多少个0?
分析
2 * 5 = 10
,所以每个2, 5
对就能形成一个末尾0,解决这个问题就在于找出100内有多少个2, 5
对。
由于100内含2因子的数量要大于含5因子的数量,所以简化为100内含多少个5因子的问题。
直觉上:5, 10, 20, 25, ... 90, 95, 100
这20个数字内有5因子。但需要注意的是25, 50, 75, 100
这4个数含5 * 5
也就是两个5因子,所以要算两次。
综上,100内含24个5因子,所以24个2, 5
对,也就是100!有24个末尾0.
推广
如果把问题从100!
推广到N!
呢?
同样要考虑2, 5
对, 考虑含5因子的数量。
不同的是,N内可能含5 * 5
, 5 * 5 * 5
… 需要重新考虑。
代码
python 调用 math.factorial()计算阶乘
计算末尾0的代码
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 18 15:38:56 2017
@author: