階乘末尾0的個數(證明)


先給出算法:

  給定n,求n的階乘末尾0的個數。

int res = 0;
while (n > 0) {
    res += n / 5;
    n /= 5;
}

  因為:

  比方說求15的階乘,也就是求

  1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 10 × 11 × 12 × 13 × 14 × 15 的末尾0的個數。現在我們把這15個數分解出來含有5的因子

  1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 2   × 11 × 12 × 13 × 14 × 3

                        × 5                 × 5

  每有一個5,階乘末尾就會多出來一個0,這樣n / 5就能統計完第一層5的個數,依次處理,就能統計出來所有5的個數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM