计算n阶乘后面尾部为0的个数
static void Main(string[] args)
{
    int n = 12;
    Int64 sum = 1;

    for (int i = 1; i <= n; i++) {
        sum *= i;
    }

    Console.WriteLine("结果:" + sum);
    Console.WriteLine(cal(n));
    Console.ReadKey();
}

static int cal(int n) {
    int temp = n;
    int count = 0;

    while (temp != 0) {
        temp = temp / 5;
        count += temp;
    }

    return count;
}

在阶乘中,出现凡是出现5的都会与偶数化简的2相乘变成10,从而尾部就多了一个0。

例如25的阶乘,

1-4都没有5,这里0个,

5可以和2变成10,所以这里1个,

6-9,不可以化出5,

10=2*5,这里1个5,所以1个,

15=3*5,1个,

20=4*5,一个,

25=5*5,注意了,这里就有2个了,两个5可以和偶数组合成两个10相乘

所以25 = 2+1+1+1+1 = 6个0

可以化简成 25/5 + 25/5/5 = 6。

公式为:n/5 + n/5/5 + ... + 0 


首页 我的博客
粤ICP备17103704号