面试题 16.05. 阶乘尾数

题目

设计一个算法,算出 n 阶乘有多少个尾随零。

示例 1: 输入: 3
输出: 0
解释:3! = 6, 尾数中没有零。

示例2: 输入: 5
输出: 1
解释:5! = 120, 尾数中有 1 个零.

说明: 你算法的时间复杂度应为O(logn)。

题解

public int trailingZeroes(int n) {
    int count = 0;
    // 阶乘中5的数量小于偶数的数量
    // 任意偶数和5相乘都可以产生一个0
    // 只需要计算质因数为5出现的次数即可
    while (n >= 5) {
        count += (n /= 5);
    }
    return count;
}