100的阶乘后面有几位0?

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位的。这个程序算不出来正确结果。如果是因为数字太大计算不出来的话,原理是什么?

天涯尽头无女友
浏览 796回答 1
1回答

MM们

超过整型上限的不能存成整数,会存成浮点数可以计算每个数里面有几个5的因子数,加起来看是多少,因为2的因子书肯定比5多var num = 0;for(let i = 1; i <= 100; i++) {&nbsp; &nbsp; let count = 0;&nbsp; &nbsp; let j = i;&nbsp; &nbsp; while ( j > 0 && j % 5 == 0 ) {&nbsp; &nbsp; &nbsp; &nbsp; j = j / 5;&nbsp; &nbsp; &nbsp; &nbsp; count ++;&nbsp; &nbsp; }&nbsp; &nbsp; num += count;}console.log(num);如果一定要计算阶乘的话,请自己写大数乘法,比方说用字符串存储数字
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript