思路:
方法一:
有多少个0取决于有多少个10;
所以只要找出10的个数即可,10取决于2*5,所以只要找出num中有多少个2为公约数的数和5为公约数的数,
又因为是阶乘,数是递增的,有2为公约数一定有5为公约数。
所以找出5为阶乘的数即可。
拿15为例 3个0 (2*5) 10 (12*15)
int CountZero (int num )
{
int count = 0;
int i, j;
for ( i = 5; i <= num; i += 5)
{
j = i;
while ( j % 5 == 0)
{
count++;
j = j/5;
}
}
return count;
}
方法二:
只要判断此数能被几个五除,并且他的余数能被几个五除即可。
例如:15能被3个5除,则有3个0,25能被5个5除他的余数5还能被一个五除,所以有6个0;
int CountZero2 (int num )
{
int count = 0;
while ( num)
{
count += num / 5;
num = num / 5;
}
return count;
}