求N 中0的個數 python實現

2021-08-06 07:33:15 字數 650 閱讀 2342

# -*- coding:utf-8 -*-

'''求n!中0的個數

思路:分析:

對n進行質因數分解 n=2^x * 3^y * 5^z...,由於10 = 2*5,所以末尾0的個數只和x與z有關,

每一對2和5相乘可以得到乙個10,於是末尾0的個數=min(x,z)。在實際中x是遠遠大於z的,所以我們只要求出z的值即可。

根據公式

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

這表明,5的倍數貢獻了乙個5,5^2的倍數又貢獻了乙個5...。

比如:25其實是貢獻了2個5,但是在n/5中已經貢獻了乙個,所以在n/5^2中再貢獻乙個;

同樣,125在n/5中貢獻乙個,在n/5^2中貢獻乙個,在n/5^3中再貢獻乙個,一共是3個。

'''class numzero:

def numzero(self, n):

countofzero = 0

while n>0:

countofzero += n/5

n = n/5

return countofzero

a = numzero()

n = 10000

print a.numzero(n)

求n的階層末尾0的個數

統計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...

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

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

求0的個數

例題描述 求0的個數 求1 2 3 4 n所得數末尾有多少個0?樣例輸入 5 樣例輸出 1方法一 採用從1乘到n,每乘一次進行一次判斷,若後面有零則去掉後面的0,並記下掉的0的個數,並且為了不超過數的表示範圍,去掉前面與0有關的數,只保留三位有效數字。include using namespace ...