求n的階層末尾0的個數

2021-07-11 00:49:05 字數 807 閱讀 1712

統計n的階層的末尾0的個數

思路:

(1)設 

n! = k × 10^m,且k不能被10整除,那麼n!末尾有

m個0

(2)再考慮對n!進行質因數分解,n! = (2^x

)*(3

^y)*(5^z

).........

因為 10 = 2 

× 5,所以 

m 只跟 

x 和 

z 有關,每一對2和5得到乙個10

於是m = min(x,z

),不難看出x顯然大於z,因為能被2整除的數出現的概率遠遠比能被5

整除的數高的

多,所以有 m = z

由於n!中含有質因數5的個數 = [n/5] + [n/25] + [n/125] + [n/625] + ...

分析:如 n = 125,要求 125!末尾0的個數

(1)每隔 5 出現乙個 5 的倍數的數,共有 [n/5] 個 5 的倍數的數,此時讓 n 變成 5 的倍數的數個數,下同

(2)每隔 25 出現乙個 25 的倍數的數,也就是說每 5 個 5 的倍數的數出現乙個 25,共有 [n/25] = [[n/5] / 5]個 25 的倍數的數

(3)每隔 125 出現乙個 125 的倍數的數,也就是說每 5 個 25 的倍數的數出現乙個 125,共有 [n/125] = [ [ [n/5] / 5] / 5] 個 125 的倍數的數

int trailingzeroes(int n) 

return numzeroes;

}

n!末尾0的個數

肯定不能直接求出 n 然後在計算後邊有多少個0 因為 1000000 的位數就是 5565709 對於 n!的末尾如果有乙個 0 的話,必然有乙個 5 與其對應著 所以就是找從 1 到 n 這些數的約數 因子 中有多少個 5 它們有幾個 5,n 末尾就有幾個0 令f x 表示正整數x末尾所含有的 0...

演算法 階乘 n 求 末尾 0 的個數

最近在網上看到乙個這樣的演算法.就寫了出來.n 末尾有多少個 0 取決於從 1 到 n 的各個數的因子中 2 和 5 的個數。又因為 2 的個數遠遠多於 5 的個數,所以只要求出這當中 5 的個數即可。不斷地用 n 除以 5,直到結果為 0,將中間的結果都加起來,即可得到因子 5 的個數。例如,10...

求N!末尾所得數字0的個數

題目 給定乙個整數n 那麼n 的階乘n 末尾有多少個0呢?例如 n 10,n 3628800,所以n!末尾就有2個零。分析 如果直接先算出n 階乘,很容易導致記憶體溢位。顯然,直接算出來是不行的。所以,我們可以換乙個角度來分析這個問題。我們知道 n 1 2 3 4 n,所以,我們可以對n!進行分解質...