N!0的个数

作者在 2008-10-11 11:12:02 发布以下内容
/*我们考虑100!末尾为0的个数,在此就不能再用上面那段代码了
分析100!中末尾为0的数都是10的因子,而10的因子是2*5构成,2的因子显然比5的因子要多,因此,求10的因子就是求此数中5的因子的个数,进而我们就可以求的末尾为0的个数。在1~100中,5的因子出现了20次,其中25,50,75,100中有两个5的因子因此总共5的因子数为20+4=24,那么100!中末尾为0的个数就是24个。
具体算法如下:
1 给出N的值
2 设一变量K为记录末尾为0的个数
3 for(int i=5,i<=n,i+=5)
4 x=I中含有5的因子个数
5 k=k+x
6 输出K
I中含有5的因子个数的算法如下:
1 设一数N=0
2 for(;i%5==0,n++)
3 i/=5
4 返回N
代码如下:
  */
#include&lt;stdio.h>
#include<conio.c>
long numof5(long n);
int main()
{
    long n,k;
    while(1){
        k=0;
    scanf("%d",&n);
    for(int i=5;i&lt;=n;i+=5)
    {
         k+=numof5(i);
    }
    printf("%d\n",k);
    }
}
long numof5(long n)
{
     int i=0;
     for(;n%5==0;i++)
     {
             n/=5;
     }
     return i;
}
默认分类 | 阅读 3257 次
文章评论,共0条
游客请输入验证码
浏览17784次
文章分类
最新评论