分析可知,只要求出这一串数中的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;
}
}
实验结果如下:
通过验证应该是正确的。