题目描述
设计一个算法,计算出n阶乘中尾部零的个数
思路
n阶乘能产生尾数0,换言之就是问n阶乘能乘出多少个10
10分解成两个质数相乘就是:2 * 5
考虑 <=n 的数中,能分解出多少对 2 && 5
分解的2肯定比5多
问题也就转化成了,<=n 的数中,能分解出多少个5
n/5 得到能分解出1个5的个数
n/5/5 得到能分解出两个5的个数
...
所以一个while循环就可以搞定
代码
public long trailingZeros(long n) {
// write your code her
long count = 0;
while(n / 5 != 0) {
n = n / 5;
count += n;
}
return count;
}
考察点
- 数学题
网友评论