POJ 1401 求乙個數的階乘結果後零的個數

2021-08-25 12:58:04 字數 585 閱讀 8527

高手分析:

求階乘末尾0的個數,對於較小的數的話可以計算出來後在算末尾0的個數,但是數字較大的時候則比較麻煩,可以通過如下原理反覆的除以5得到最後的結果:

原理是:

假如你把1×2×3×4×……×n中每乙個因數分解質因數,結果就像:

1 × 2 × 3 × (2 × 2) × 5 × (2 × 3) × 7 × (2 × 2 ×2) ×……

10進製數結尾的每乙個0都表示有乙個因數10存在——任何進製都一樣,對於乙個m進製的數,讓結尾多乙個0就等價於乘以m。

10可以分解為2 × 5——因此只有質數2和5相乘能產生0,別的任何兩個質數相乘都不能產生0,而且2,5相乘只產生乙個0。

所以,分解後的整個因數式中有多少對(2, 5),結果中就有多少個0,而分解的結果中,2的個數顯然是多於5的,因此,有多少個5,就有多少個(2, 5)對。

所以,討論1000的階乘結尾有幾個0的問題,就被轉換成了1到1000所有這些數的質因數分解式有多少個5的問題。

5的個數可以用上面那個式子算出

#includeint main() printf("%d/n",sum); } }

求乙個數的階乘中0的個數

連續幾天產出為負,再不寫點東西沒法交代了。public class the number of 0 in factorialn 階乘中有多少0,如果n k 10 m k是乙個不能被10整除的數,那麼m有多少個就有多少個0 n!進行質因數分解n!2 x 3 y 5 z 由於只有2 5 10,所以可以看...

C 利用遞迴求乙個數的階乘 遞迴 階乘

當然也可以用迭代 就是迴圈 來求階乘,遞迴適用於選擇結構,迭代適用於迴圈結構。能用遞迴解決的問題,一定能用迭代來解決。c 利用遞迴求乙個數的階乘 遞迴 即自己呼叫自己 分類 分為直接呼叫和間接呼叫 直接呼叫 不通過其他函式直接在本函式內,呼叫自己。間接呼叫 通過多步操作,在其他函式內呼叫本身。inc...

求乙個數約數的個數

求約數的個數 計算乙個整數的約數個數 輸入格式 輸入乙個整數 輸出格式 輸出一行,為輸入整數的約數的個數 樣例輸入 10 樣例輸出 4ac import math number int raw input count 0 sqrt float math.sqrt number if number s...