为了账号安全,请及时绑定邮箱和手机立即绑定

100的阶乘后面有几位0?

100的阶乘后面有几位0?

天涯尽头无女友 2018-11-09 14:11:52
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);

如果一定要计算阶乘的话,请自己写大数乘法,比方说用字符串存储数字

查看完整回答
反对 回复 2018-12-03
  • 1 回答
  • 0 关注
  • 794 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信