階乘n 的結尾後面有多少個零

2021-08-29 13:51:04 字數 768 閱讀 8271

leetcode - 階乘後的零

思路:我們將 n! 進行質因數分解,使它由質數相乘得來,即 n!=

2x×3

y×5z

×7w×

..

.n!=2^x \times 3^y \times 5^z \times 7^w \times ...

n!=2x×

3y×5

z×7w

×...

,這樣10只能由2×5

2 \times 5

2×5產生,而2的個數要比5的個數多,因為從1開始數,每連續兩個自然數就有乙個2的倍數,可以提取乙個2因子,而每連續五個自然數才有乙個5的倍數,所以2的個數要比5的個數多得多。這樣我們只要計算出z就可以。

要計算z很簡單,看n!能分解出多少個5因子。先計算1~n中有多少個是5的倍數,顯然有n/5個,我們從這些數中提取n/5個5因子。而25的倍數,同時也是5的倍數,可以提取兩個5因子,有乙個已經計算在n/5裡面,所以我們再計算出1~n中有多少個是25的倍數,從中我們可以再提取n/25個5因子。125的倍數可以提取三個5因子,以此類推,最後 z=n

/5+n

/52+

n/53

+...

z=n/5+n/5^2+n/5^3+...

z=n/5+

n/52

+n/5

3+..

. 。偽**:

int count =0;

while

(n >0)

n 後面有多少個0

很經典的一道數學題 求n!後面有多少個0。我的思路 從 那些數相乘可以得到10 這個角度,問題就變得比較的簡單了。首先考慮,如果n的階乘為k和10的m次方的乘積,那麼n 末尾就有m的0。如果將n的階乘分解後,那麼 n的階乘可以分解為 2的x次方,3的y次方,4的5次z方,的成績。由於10 2 5,所...

求N 後面有多少個0

從輸入中讀取乙個數n,求出n!中末尾0的個數。輸入有若干行。第一行上有乙個整數m,指明接下來的數字的個數。然後是m行,每一行包含乙個確定的正整數n,1 n 1000000000。對輸入行中的每乙個資料n,輸出一行,其內容是n!中末尾0的個數。33 1001024024 25310 2 5,求出1 n...

n階乘尾部有多少個零?

計算出 n 結果後判斷,是不可以行的,結果太大會溢位。有這樣的現象 從0開始,每加5,其階乘尾部便會增加乙個0。比如 5 有乙個0,10 有兩個0,15 有三個0.現象的原因 5和任意偶數相乘就會產生0,而偶數的個數遠比5的個數多,所以每增加5 結尾就會增加乙個零。按照這個現象 n 尾部0的個數 n...