您的位置:首页 > 其它

阶乘末尾的零

2016-05-03 09:34 323 查看
题目:给一个整数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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: