172. 阶乘后的零
1.题目描述及示例
- 题目描述
给定一个整数 n,返回 n! 结果尾数中零的数量。 - 示例
2.题解思路及代码
-
思路
(1)在阶乘过程中,相乘的数有因子2和5,相乘结尾才有零。例如:4!=24,末尾没有0,因为2,3,4中没有数的因子是5。例如5!=120,末尾有一个0,因为有一个2*5。
(2)遇到有因子是2的数比因子是5的数要多得多,只要知道阶乘的数中有多少数能被5整除,这些数累计共有多少个因子5就行。例如:34!末尾7个0。其中含有因子5的数为:5,10,15,20,25,30;这些数含的因子5的个数为1,1,1,1,2,1,总共7个,所以末尾7个0。
(3)但如果对每一个阶乘的数循环遍历的话就太慢了,但可以让阶乘的数不断除以5,然后累加除法后的结果。以34!为例,34/5=6,6/5=1,1<5,除法结束,累加的结果为6+1=7。 -
代码
public int trailingZeroes(int n) {
int num=0;
while (n>=5)
{
num+=n/5;
n/=5;
}
return num;
}