题目:给一个整数N,求它的阶乘N!,有几个0结尾
方法一
要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数。然后求和。
int fun1(int n)
{
int num = 0;
int i,j;
for (i = 5;i <= n;i += 5){
j = i;
while (j % 5 == 0){
++num;
j /= 5;
}
}
return num;
}
方法二:
Z = N/5 + N /(5*5) + N/(5*5*5).....知道N/(5的K次方)等于0
公式中 N/5表示不大于N的数中能被5整除的数贡献一个5,N/(5*5)表示不大于N的数中能被25整除的数再共享一个5.......
int fun2(int n)
{
int num = 0;
while(n){
num += n / 5;
n /= 5;
}
return num;
}