1乘到100的积末尾有几个零
给定一个整数 n,返回 n! 结果尾数中零的数量。
输入: 3 , 输出: 0 , 解释: 3! = 6, 尾数中没有零。
输入: 5 , 输出: 1 , 解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
解法一:
阶乘,一个正整数的阶乘是所有小于及等于该数的正整数的积。示例:6! = 6 * 5 * 4 * 3 * 2 * 1 , 等于 720
公式 Z=[N/5] + [N/5^2] …
n = 300 求阶乘后的0 , 300/5 + 300/25 + 300/125 = 60 + 12 + 2
总共有5的质因数 74 个
var trailingZeroes = function(n) {
var div=5 ,sum=0
while(div<=n){
sum += Math.floor(n/div)
div*=5
}
return sum;
};
解法二:
n = 1000 求阶乘后的 0 ,1000/5=200 , 200/5=40, 40/5=8, 8/5=1, 3/5=0,
一共200+40+8+1+0 等于249个
var trailingZeroes = function(n) {
var count=0;
while(n= Math.floor(n/5)) {
count+=n;
}
return count;
};