计算阶乘右端0的个数
当\(n\)很大时,计算\(n!\)变的非常困难。在这个前提下,想要去计算\(n!\)右端有多少个\(0\)就要利用一些数学技巧。
任何一个大于\(1\)的自然数都可写成质数的积的形式,在质数中只有\(2 * 5\)能够得出一个\(0\),因此我们需要计算\(n!\)在分解质因数之后\(2\)的个数和\(5\)的个数。显然\(2\)的个数是多于\(5\)的个数的,所以只需计算最后有多少个因子是\(5\)即可。
\(f(n)=[\frac{n}{5}]+[\frac{n}{25}]+[\frac{n}{125}]+[\frac{n}{625}]+...\)
\(5,10,15,20...\)这些能贡献出一个\(5\),而\(25,50...\)能贡献出两个\(5\)。能贡献出两个\(5\)的数在第一次计算时已经算过一次了,所以这样计算并不冲突。