求100000!末尾有多少個0?

2021-08-14 13:17:58 字數 609 閱讀 4396

這其實是乙個求n的階乘末尾有多少個0的問題

分析:

想到這個問題,可能我們第一反應就是現求出n!,然後再根據求出的結果,最後得出n!的末尾有多少個0。但是如果是乙個大數,例如100000,肯定會溢位而且效率很低。

於是我們另闢蹊徑,把這個問題轉換成那些數相乘可以得到10」這個角度,問題就變得比較的簡單了。

因為10 = 2 * 5,又因為被2整除的頻率比被5整除的頻率高的多。所以我們只要求出5的個數就可以了。

/*求100000!末尾有多少個0?*/

public

static

void

main(string args)

}system.out.println(sum);

}}

方法二:

z = n/5 + n /(5*5) + n/(5*5*5)…..知道n/(5的k次方)等於0

公式中 n/5表示不大於n的數中能被5整除的數貢獻乙個5,n/(5*5)表示不大於n的數中能被25整除的數再共享乙個5…….

int fun2(int n)

return num;

}

求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進行質因數分解 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的倍數...