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//计算阶乘结果后面有几个0var 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位的。这个程序算不出来正确结果。如果是因为数字太大计算不出来的话,原理是什么?
1 回答
MM们
TA贡献1886条经验 获得超2个赞
超过整型上限的不能存成整数,会存成浮点数
可以计算每个数里面有几个5的因子数,加起来看是多少,因为2的因子书肯定比5多
var num = 0;
for(let i = 1; i <= 100; i++) {
let count = 0;
let j = i;
while ( j > 0 && j % 5 == 0 ) {
j = j / 5;
count ++;
}
num += count;
}
console.log(num);
如果一定要计算阶乘的话,请自己写大数乘法,比方说用字符串存储数字
添加回答
举报
0/150
提交
取消