用编程求1*2*3*4*……*n的末尾有多少个0;(n有键盘输入n的范围为大于1000小于10000)

分析可知,只要求出这一串数中的5的个数,每一个数中5的个数即可。因为2的个数永远是比5多的(比如从1到10,能够分解出来2的个数是2,4,6,8,10也就是相当于有10个2相乘,而5的个数相当于只有两个因而可知,从1到10相乘的最后结果中末尾只有两个0),所以能够得出结果就是从1到n中的所有数的里面含有的5的个数,就是我们要求得末尾的0的个数。
代码如下:

#include<stdio.h>
int count=0;
void main()
{
    int n,i;
    printf("请输入n的值:\n");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        find5(i);
    }
    printf("从1到%d相乘的结果中末尾0的个数为:%d",n,count);
}
int find5(int n)
{
    while(n%5==0)
    {
        n=n/5;
        count=count+1;
    }
}

实验结果如下:

在这里插入图片描述在这里插入图片描述
通过验证应该是正确的。

猜你喜欢

转载自blog.csdn.net/weixin_43911526/article/details/89681058
今日推荐