[LeetCode]Factorial Trailing Zeroes--javascript解法

来源:互联网 发布:优酷mac下的视频在哪里 编辑:程序博客网 时间:2024/06/05 02:06

[LeetCode]Factorial Trailing Zeroes–javascript解法

题目

输入数字n,计算出n!的结果中尾数包含的0的个数

解法一

思路:
我们很容易想到直接计算出n!的结果,然后再根据计算结果来统计尾数中0的个数。

缺点:
当n的值特别大时,可能会导致n!的阶乘计算溢出。

解法二

思路:
我们先思考为什么尾数会出现0,答案就是2*5会产生一个0。所以我们可以通过计算n到1这些数字的质因子中所包含的2和5的总个数。
又因为2的个数一定会大于5,所以我们只需要计算5的质因子个数。
计算n到1这n个数一共包含的质因子5的个数的方法是:

Math.floor(n/5)+Math.floor(n/25)+Math.floor(n/125)+...

代码:

/** * @param {number} n * @return {number} */var trailingZeroes = function(n) {    var count = 0;    for(let i=5;n/i>=1;i*=5){        count += Math.floor(n/i);    }    return count};
0 0