题目:给定一个非负整数,判断它的阶乘结果的结尾有几个 0。
题解:我们可以检查 55 的幂,而不是每次除以 55 来计算因子数。这是通过检查 i
是否可以被 55,2525,125125 等整除来实现的。
每个尾部的 0 由 2 × 5 = 10 而来,因此我们可以把阶乘的每一个元素拆成质数相乘,统计有
多少个 2 和 5。明显的,质因子 2 的数量远多于质因子 5 的数量,因此我们可以只统计阶乘结果
里有多少个质因子 5。
class Solution {
public int trailingZeroes(int n) {
int count=0;
for(int i=5;i<=n;i+=5){
int powerOf5=5;
while(i%powerOf5==0){
count+=1;
powerOf5*=5;
}
}
return count;
}
}