阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
测试用例
1 | 1. 3 // 0 |
解法一
思路
- 3! = 3 2 1
- 6! = 6 5 4 3 2 * 1
- 10! = (5 2) 8 7 6 5 4 3 2 * 1
- 每一个5都可以找到偶数配对,就相当于一个5可以产生一个0。
- 找出阶乘中含有多少个因子5就可以了
算法
1 | /** |
解法二
思路
- 5 的因子一定是每隔 5 个数出现一次
- 25 = 5 5, 125 = 5 5 * 5
- 每隔 5 个数,出现一个 5,每隔 25 个数,出现 2 个 5,每隔 125 个数,出现 3 个 5…
- 因此找出现了多少次五个数,当这个次数大于5时,证明n大于25,有多一个5,以此类推,125同理。
- count = n / 5 + n / 25 + n / 125 …
算法
1 | /** |