Bootstrap

计算N阶乘中尾部零的个数

计算n阶乘中尾部零的个数

假设 n = 5;

n! = 5 X 4 X 3 X 2 X 1 = 120。 尾部零的个数为:2。

假设 n = 15

n! = 15 X 14 X 13 X 12 X 11 X 10 X 9 X.....X 5 X 4 X 3 X 2 X 1 = 1307674368000。
尾部的零的个数为:3。

由以上可知:
第一个,当 n = 5 的时候,零的出现是由于 2 X 5。
第二个,当 n = 15的时候,零的出现是由于 10 X 【2 X 5 】X 【4(或者别的偶数) X 15】。
因此可以总结为,零的出现是由于 2X5 。

所以接下来我们只需要统计 2 X 5 的个数即可。我们可以知道 2 的个数是多余 5 的个数的,所以我们只需要统计 5 的个数即可查找出尾部零的个数。

经过以上分析,我们只需要统计阶乘中有多少 5 即可。

public long zeros(long n)
{
	long sum = 0;
	while(n != 0){
		sum += n / 5;
		n = n / 5;
	}
	
	return sum;
}

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;