首页 > 解决方案 > 在javascript中计算尾随零

问题描述

如何计算给定数字的阶乘中尾随零的数量。

N! = 1 * 2 * 3 * 4 ... N

对此有任何帮助吗?

标签: javascript

解决方案


因为零来自因子 5 和 2 相乘,所以迭代所有数字从1到输入数字,每当找到这些因子时,就会增加五和二的累积计数。然后,返回这两个计数中较小的一个:

function zeroCount(n) {
  let fives = 0;
  let twos = 0;
  for (let counter = 2; counter <= n; counter++) {
    let n = counter;
    while (n % 2 === 0) {
      n /= 2;
      twos++;
    }
    while (n % 5 === 0) {
      n /= 5;
      fives++;
    }
  }
  return Math.min(fives, twos);
}
console.log(zeroCount(6)); // 720
console.log(zeroCount(10)); // 3628800


推荐阅读