問題描述:計算任意一個數(shù)字的階乘(如32挺身!)值侯谁,并獲取其尾部數(shù)字0的數(shù)量。
重點:
- 階乘公式的應用
主要考點:
- 階乘結(jié)果其尾部0的產(chǎn)生原因
算法公式:
- 基本階乘公式:N! = (N-1)墙贱! × N
- 示例推導:
- 4热芹! = 4 × 3 × 2 × 1 = 24
- 5! = 5 × 4 × 3 × 2 × 1 = 120
- 10惨撇! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 3628800
- 由上式可得:尾部0的數(shù)量與其素因子5的數(shù)量有關伊脓,即其0的個數(shù)為N!中5的倍數(shù)出現(xiàn)次數(shù)之和
實現(xiàn)代碼:
public long ZerosOfTailTheFac(long n) {
//n!中,5的倍數(shù)出現(xiàn)次數(shù)
long sum = 0;
while (n != 0) {
sum += n / 5;
n /= 5;
}
return sum;
}
運算結(jié)果:示例為12串纺!
sum:2
n/5:2
sum:2
n/5:0
result:2