不是5的倍数无论和哪个相乘都不可能出现个位为0的结果。
25 * 4 = 100,能产生两个0,同理(75 = 25 * 3 = 5 * 5 *3)* 4 = 300;(125 = 5 * 5 * 5 )* 8 = 1000;
即一个数包含多少个因子5其就可以同足够的偶数相乘产生相同个数的末位0。
总结如下:N的阶乘中末位0的个数为:N/5 + N/25 + N/125 ……
#include <stdio.h>
int zero_count(int n);
int main(int argc ,char *argv[])
{
printf("zero_count is %d...\n", zero_count(1024));
return 0;
}
int zero_count(int n)
{
int count = 0;
while(n > 0) {
n = n/5;
count += n;
}
return count;
}
运行结果为:253
分析一下:
是5的倍数的数有: 1024 / 5 = 204个
是25的倍数的数有:1024 / 25 = 40个
是125的倍数的数有:1024 / 125 = 8个
是625的倍数的数有:1024 / 625 = 1个
所以,结果是 253