求N 中末尾有多少個0

2021-06-22 14:16:33 字數 590 閱讀 2278

分析:

對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個。

**:

public int getcontinuezero(int num)

return countofzero;

}

求n!的二進位制中最低位1的位置。實際上就是判斷二進位制末尾有多少個0,然後位置=0的個數+1;

判斷二進位制末尾0的個數可以用右移操作來完成。而二進位制每次右移一位相當於十進位制除以2,直到除不夠為止。所以歸根結底就是要求n!質因數分解的2的個數x。這個操作與上面求5的個數如出一轍。

求N!末尾有多少個0

思考 該題實際上是求 2 5 因子對的個數。對於任意乙個階乘,5因子的個數總是小於2因子的個數,僅需考慮n 中5因子的個數 方法 1 將該數用 5 除,得到的商取整數。2 然後再用所得商當被除數除以 5,得到的商取整數。3 持續做到商等於 0 為止。4 過程中的商加總即為階乘的尾數 0 的個數。例 ...

2012 09 03 求N 末尾有多少個0

n 末尾有都少個0,首先追本溯源0是怎麼得來的,所有的0都是由質因數2和5相乘得到的。那麼對所有的n 在內的n個數進行質因數分解,只需要計算2和5的個數,取其中較小的乙個,即能得到n 有多少個0。1 要對n個數進行質因數分解,採取最暴力的方式也能解決,當n很大的情況下就不再適用了,那麼有沒有一種方法...

N 末尾有多少個0

問題分析 對於n 想要知道其末尾有多少個0,則可以分解為問題能被多少個10整除,繼續分解,被10整除,則必能同時被2和5整除。則對n!進行質因數分解,n 2 x 3 y 5 z 可得n 2 p 5 q r,1z 一 則m 1 2 k,存在乙個k使得5 k n 二 則m n 5 n 5 2 n 5 k...