1000的阶乘所得的结果末尾有几个“0”?

问题描述:

1000的阶乘所得的结果末尾有几个“0”?

0是由因数10产生的,10是由2*5产生的。
每2个数就有一个是2,每5个才有1个是5的倍数。所以我们只需要讨论有多少个因数5就可以了。
每5个数有1个5的因数,那么1000/5=200个
每25个数有1个5*5的因数,那么就多出来1000/25=40个5
每125个数就有5*5*的因数,那么多出来的5增加1000/125=8个
5^4有一个,则再增加一个5
总共有5的因数1000/5+1000/25+1000/125+1
=249个5
那么1000的阶乘后面有249个0

用pascal语言编程计算的247 算错了 是249

249

#include
void main()
{ int n,i,a,j,s,k;
printf("please input n\n");
scanf("%d", &n);
if (n>=5)
{a=n/5;
i=n/25;
j=n/125;
k=n/625;
s=i+j+k+a;
}
printf("the number of zero is %d\n", s);
}

只要求1000里有几个5的因数就可以了
1000/5=200
再求1000里有几个25的因数
1000/25=40
再求1000里几个125的因数
1000/125=8
最后625还是一个
所以,最后得到200+40+8+1=249个
有249个零
不懂的来问吧