不計算階乘得到結果末尾0的個數

今天偶然看到一個要求,求1000~10000之間的數n的階乘並計算所得的數n!末尾有多少個0?測試

要求: 不計算 只要獲得末尾有多少個0就能夠了。spa

看到題目後,分析了下, 10的階乘就已經很大了。計算出來再獲得這個末尾的0的個數,徹底不現實,即便實現了也是很麻煩的。code

後來想某個數的階乘中乘積有5結尾的數字的時候就應該在結果的末尾產生一個0.blog

付諸實現,測試了幾個, 沒出錯。數學

貼出來, 你們看看, 有問題了及時指教:class

/**
     * 求1000~10000之間的數n的階層並計算所得的數n!末尾有多少個0?
     */
    public static void test2(int number){
        int count = number/5;
        System.out.println(count);
    }

又複習了下數學知識,上面的計算應該是不對的。test

應該寫成下面這樣,每到5的倍數時候會+1 。static

int x = 10000;
while (x>0)
{
      count = count + x / 5;
      x = x / 5;
}
System.out.println(count);
相關文章
相關標籤/搜索