n!末尾0的個數

Q:求n!末尾0的個數,例如5!=120,末尾有一個零,10!=3628800,有兩個零。
A:最簡單的思路就是把所有的數字進行分解質因數,例如:
6 = 23
15 = 3
5
64 = 222222 = 2^6
100 = 2^2 * 5^2
576 = 2^6 * 3^2
那么我們在計算n的階乘時,實際上就是把所有小于等于n的正整數分解成質因數,
然后再將其乘到一起,那么末尾0的個數實際上就是2
5的個數,
而2的個數明顯是很多很多的,所以問題就轉化成了5的個數。
而只有5的倍數才有5這個因數,所以,
問題就進一步簡化為小于等于n的數中有多少個數是5的倍數,
當然25的倍數,125的倍數,625還要單獨考慮。
代碼如下

public static int getNumbersOfZero(int n)
{
    int sum=0;
    while (n>0)
    {
        sum+=n/5;
        n/=5;
    }
    return sum;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第一章數和數的運算 一概念 (一)整數 1整數的意義 自然數和0都是整數。 2自然數 我們在數物體的時候,用來表示...
    meychang閱讀 2,656評論 0 5
  • 小升初的過程中,競賽成績能起到相當大的作用,談到競賽就離不開奧數。以下是小學奧數題知識點大匯總: 1.和差倍問題 ...
    滬江中小幼閱讀 1,146評論 0 7
  • 2009年一位神秘人物中本聰,發布了一種點對點的電子現金系統,從此推開了歷史新的紀元。 從比特幣誕生至今已經,經歷...
    卡卡10086閱讀 1,803評論 0 3
  • 那是一個八月的午后,剛剛經歷完軍訓,曬的黝黑的皮膚,額頭上不斷的冒出的痘痘,披散凌亂的頭發,一雙一走路就嘎吱嘎吱直...
    十二君子閱讀 2,005評論 0 14
  • 當自己通過閱讀一本書,或通過聽一場演講,而獲得一個新的概念或理論時,為了能夠消化吸收這個新的知識,盡量嘗試以自己的...
    隨意咖啡閱讀 145評論 0 0