阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
简化而来N的阶乘尾数有多少个0,如果简单的用暴力算法 直接递归乘然后截取后面的尾数的0,N小的时候是可以的,如果N很大的时候显然是不现实的。
末尾0的个数就是指这个数总共有几个10因子,而10又能表示成2和5的乘积。假设m=n!,那么m中2的因子个数肯定大于5的因子个数,所以m中5的因子个数即是所要求结果。
令f(x)表示正整数x末尾所含有的“0”的个数,则有:
当0 < n < 5时,f(n!) = 0;
当n >= 5时,f(n!) = k + f(k!), 其中 k = n / 5(取整)。
function getZeroNums (ntotal) {
if(ntotal<5)
return 0;
else
{
ntotal =parseInt(ntotal/5);
return ntotal+getZeroNums(ntotal);
}
}
var nums=1000;
console.log(getZeroNums(nums));
输出
249