【JS】階乘後的零 #數學 1乘到100/1000/10000 的積 末尾有幾個零?
阿新 • • 發佈:2018-11-30
1乘到100的積末尾有幾個零
給定一個整數 n,返回 n! 結果尾數中零的數量。
輸入: 3 , 輸出: 0 , 解釋: 3! = 6, 尾數中沒有零。
輸入: 5 , 輸出: 1 , 解釋: 5! = 120, 尾數中有 1 個零.
說明: 你演算法的時間複雜度應為 O(log n) 。
解法一:
階乘,一個正整數的階乘是所有小於及等於該數的正整數的積。示例:6! = 6 * 5 * 4 * 3 * 2 * 1 , 等於 720
公式 Z=[N/5] + [N/5^2] …
n = 300 求階乘後的0 , 300/5 + 300/25 + 300/125 = 60 + 12 + 2
總共有5的質因數 74 個
var trailingZeroes = function(n) {
var div=5 ,sum=0
while(div<=n){
sum += Math.floor(n/div)
div*=5
}
return sum;
};
解法二:
n = 1000 求階乘後的 0 ,1000/5=200 , 200/5=40, 40/5=8, 8/5=1, 3/5=0,
一共200+40+8+1+0 等於249個
var trailingZeroes = function(n) { var count=0; while(n= Math.floor(n/5)) { count+=n; } return count; };