Write a program that will calculate the number of trailing zeros in a factorial of a given number.javascript
http://mathworld.wolfram.com/...html
$$N! = 1 * 2 * 3 * 4 ... N$$java
zeros(12) = 2 # 1 2 3 .. 12 = 479001600
that has 2 trailing zeros 4790016(00)
Be careful 1000! has length of 2568 digital numbers.git
只有當有2*5
出現的時候,末尾纔有可能出現0,而2的數量遠大於5,因此咱們只須要計算在N!中,有多少個5.函數
function zeros (n) { var num = 0; while ( n > 4 ) { n = Math.floor(n/5); num += n; } return num; }
Math.floor()
和 parseInt()
的區別在上面的解答中,用到了Math.floor()
對數字進行向下取整,咱們知道parseInt()
也能達到一樣的效果,那二者有什麼區別嗎?code
1. 功能不一樣 htm
Math.floor(x)
:對數字進行向下取整。ip
parseInt(str, [radix])
:函數可解析數字或者字符串,並返回其整數部分。其中radix
爲可選參數,默認爲10進制。字符串
Math.floor('123'); // NaN parseInt('123'); // 123 // 字符串首字符爲數字 parseInt('123a'); // 123 // 字符串首字符爲非數字 parseInt('a123'); // NaN
2. Math.floor()
和 parseInt()
在對負數進行取整時,結果是有差別的。get
Math.floor(-1.3); // -2 parseInt(-1.3); // -1