这个属于一个技巧题,首先你不可能计算出所有数字的阶乘然后计算后面有几个0。

    我们可以知道n!可以变成一系列质子相乘,例如5!=2^3*3*5,7!=2^4*3^2*5*7等,因此n!=2^X*3^Y*5*Z.....其中一个2*5就会产生一个0,因此0的个数为MIN(x,z),明显x>z,因为一个数字被2整除的几率比被5整除要大,因此我们只要求出z就好了。

    例如10!中出现了2个5(10/5),25!中出现了5个5(25/5),但是25其实本身是2个5组成的,因此要在多加一个5(25/(5*5)),因此求5的个数为(Y/5)+(Y/(5*5))+(Y/(5*5*5)..

    1. function zeros (n) {
    2.     var zs = 0;
    3.     while(>= 5){
    4.         n=Math.floor(n/5);
    5.         zs+=n
    6.     }
    7.     return zs;
    8. }
    回到顶部
    我要评论

    所有评论

      相关文章