问题描述:计算任意一个数字的阶乘(如32!)值,并获取其尾部数字0的数量。
重点:
- 阶乘公式的应用
主要考点:
- 阶乘结果其尾部0的产生原因
算法公式:
- 基本阶乘公式: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的数量与其素因子5的数量有关,即其0的个数为N!中5的倍数出现次数之和
实现代码:
public long ZerosOfTailTheFac(long n) {
//n!中,5的倍数出现次数
long sum = 0;
while (n != 0) {
sum += n / 5;
n /= 5;
}
return sum;
}
运算结果:示例为12!
sum:2
n/5:2
sum:2
n/5:0
result:2