172. Factorial Trailing Zeroes

2021-08-18  本文已影响0人  jluemmmm

给定一个整数n,返回 n! 结果中零的数量。

计算结果中0的个数,实际是计算n! 中10的数目,需要看执行乘法的过程中,有多少 2 和 5的因子的数。比如当n = 16,包含5因子的数字实5,10,15,包含2的因子的数字是2,4,6,8,10,12,14,因为只有三个完整的对,因此16之后有3个0。
实际上,包含2的因子的数字一定比包含5的因子的数字多,因此无需对包含2的因子的数目进行计算。

/**
 * @param {number} n
 * @return {number}
 */
var trailingZeroes = function(n) {
  let res = 0;
  for (let i = 5; i <= n; i += 5) {
    let powerOf5 = 5;
    while (i % powerOf5 === 0) { 
      res++;
      powerOf5 *= 5;
    }
  }
  return res;
};
/**
 * @param {number} n
 * @return {number}
 */
var trailingZeroes = function(n) {
  let res = 0;
  while (n > 0) {
    n = Math.floor(n / 5);
    res += n;
  }
  return res;
};
上一篇下一篇

猜你喜欢

热点阅读