问题描述:
计算任意一个数字的阶乘(如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;
}