#### 题目描述:
设计一个算法,计算出n阶乘中尾部零的个数。
#### 输出实例:
```txt
输入: 11
输出: 2
样例解释:
11! = 39916800, 结尾的0有2个。
输入: 5
输出: 1
样例解释:
5! = 120, 结尾的0有1个。
```
#### 思路:
一个数乘以 10 就一定会在末尾产生一个零,并且只有 2 * 5 才会产生 10。于是,问题转化为 N! 种能够分解成多少对 2*5,再一步分析会发现,在 N!中能够被 2 整除的数一定比能够被 5 整除的数多,于是问题近似转化为求 1…n 这 n 个数中能够被 5 整除的数有多少个。
- 当 N = 20 时,1~20 可以产生几个 5 ?答是 4 个,此时有 N / 5 = 4。
- 当 N = 24 时,1~24 可以产生几个 5 ?答是 4 个,此时有 N / 5 = 4。
- 当 N = 25 时,1~25 可以产生几个 5?答是 6 个,主要是因为 25 贡献了两个 5,此时有 N / 5 + N / 5^2 = 6。
因此可以发现,产生 5 的个数为 sum = N/5 + N/5^2 + N/5^3+…。
所以这个sum就是阶乘尾部0的个数
#### 代码:
```java
public class Solution {
/*
* @param n: An integer
* @return: An integer, denote the number of trailing zeros in n!
*/
public long trailingZeros(long n) {
long count=0;
while(n>=5){
count+=n/5;
n/=5;
}
return count;
}
}
```

阶乘尾部零的个数问题