-4

我有个问题。我想找到大数的阶乘。

例如:1555!= ?。195!= ?。

我的主要问题是我想知道阶乘数字中以 0 结尾的确切数量。

我使用以下公式: (m!)^n = m! = 2*10^(n-1) + 2^2 * 10^(n-2) + ------- + 2^n。

有了这个,我可以解决像这样结束 0 的数量的其他阶乘。

100!= 2*10^1 + 2^2*10^0 = 20+4 = 24

100!根据此计算,有 24 个结尾 0。

但是,然后我遇到了其他问题,

例如: 95!

一)95!= (100 - 5)!= 24 - 2*5^(1-1) = 24 - 2 = 22 => 95!有 22 个 0。

ii) 95!= (90 + 5)!= 9*(2*10^0) + 2*5^0)= 18+2 = 20 => 95!有 20 个 0。

这是我的问题。通过使用上面的公式,我得到了两个不同的答案,我很困惑,我没有得到完美的答案,所以请帮我找到它。

谢谢...

4

2 回答 2

3

n! 中尾随零的数量!是序列 1, 2, ..., n 中 5 的因子数。这是因为尾随零是结果中 10 的因子数,而 10 的素因数分解为 5 x 2。2 的因子总是多于 5,因此 5 的数量给出了结果。

5 的因子数是...[n/5] + [n/25] + ... + [n/(5^k)] + ...其中[ ]表示向下舍入(floor)。

计算这个的代码应该是什么样的?可能是这样的。

int trailing_factorial_zeros(int n) {
    int result = 0;
    int m5 = 5;
    while (n >= m5) {
        result += n / m5;
        m5 *= 5;
    }
    return result;
}
于 2013-02-07T07:22:01.477 回答
2

这是一个不好的问题,无论如何可能属于数学网站。但这里有一个想法给你:

前100名!= 100 * 99!

99!= 99 * 98!依此类推,直到 1!= 1 和 0!= 1。

您想知道 N 中有多少个尾随 0!(至少我是这样理解这个问题的)。

想想10中有多少!

10! = 3628800

所以有两个。原因是因为只有 2*5 = 一个尾随 0 和 10 的数字。所以我们总共有 2。(5*4 有尾随 0 但 4 是 2 的倍数,此外,我们只得到将单个数字相乘一次)

那么,20 是一个不错的选择!有 4 个(确实如此)。

现在你的工作是证明(或反驳)这种模式会成立,然后想出一种编码方法。

于 2013-02-07T07:18:55.573 回答