对N进行质因数分解,N!=(2^x)*(3^y)*(5*z)*......,由于2*5=10,所以结果只与2和5的个数有关,每一对2和5相乘都能得到一个0,于是min(x,z)就是要求的结果。不难发现x大于等于z,因为能被2整除的数出现的概率要比能被5整除的数高得多,所以求出5的个数即可。
int CountZero1(int n)
{
int ret=0;
int i,j;
for(i=1;i<=n;i++)
{
j=i;
while(j%5==0)
{
ret++;
j=j/5;
}
}
return ret;
}