快速計算一個數的階乘的尾數有幾個0算法

思路:

末尾爲0 ,說明是5的倍數,同時你不會真的去計算結果再得到0的數目,這樣不可取。 所以想到從階乘的數字下手, 比如 5!=120 有一位; 10! = 3628800 有2位0  ; 多計算幾個發現規律  n/5 ;  對於數據小的時候滿足 ,但大於 25時不滿足,繼續發現規律。  最後  得到下面的規律:

 long k= n/5;
        long x= k;
        while(k>5){
            x+=k/5;
            k=k/5;
        }

這裏計算後滿足要求,後續再用位操作看怎麼實現,猜測會比這個操作要快。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章