求50!末尾有多少个0,即求50的阶乘的结果中,2*5因子的个数。由于因子2的个数远大于5,转为求因子5的个数。
let res = 0;
/**
* 程序主方法
* @params maximum[int] 将被计算阶乘的正整数
*/
const factorial_end_with_zero = (maximum) => {
res = 0;
exactFiveNums(maximum);
return res;
};
/**
* 取得能被5整除的因子
* @param {*} num
*/
const exactFiveNums = (num) => {
if (num < 5) {
return;
} else {
num = num - (num % 5);
}
while (num % 5 === 0 && num > 0) {
res = res + decompose(num);
num = num - 5;
}
};
/**
* 因子可以因式分解为多少个5
* @param _num[int] 可以被5整除的数
*/
const decompose = (_num) => {
let _res = 0;
while (_num % 5 === 0 && _num > 0) {
_res++;
_num = _num / 5;
}
return _res;
};