5! = 120, 末尾有一个0.
6! = 720, 末尾有一个0.
10! =3628800, 末尾有两个0.
//阶乘函数
function factorial(n) {
let result = 1;
while( n > 1) {
result = result * n;
n--;
}
return result;
}
var result = factorial(100);
console.log(result); //9.332621544394418e+157
//计算阶乘结果后面有几个0
var index = 0;
if(result % 10 == 0) {
while(result % 10 == 0) {
result = result / 10;
index++;
}
} else {
console.log('No zero in the end!');
}
console.log(index);
这个代码哪里不对? 100的阶乘末尾的零是有24位的。这个程序算不出来正确结果。如果是因为数字太大计算不出来的话,原理是什么?
超过整型上限的不能存成整数,会存成浮点数
可以计算每个数里面有几个5的因子数,加起来看是多少,因为2的因子书肯定比5多
如果一定要计算阶乘的话,请自己写大数乘法,比方说用字符串存储数字