今天偶然看到一個要求,求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);