gpt4 book ai didi

c - 如何通过忽略其中包含 0 的元素来提高数组效率

转载 作者:行者123 更新时间:2023-11-30 19:47:52 24 4
gpt4 key购买 nike

我有一段计算大阶乘的代码,

作业规定我必须使用数组,但是它的效率非常低,因为范围是从 20 开始!到60!所以我必须使用一个有 82 个元素的数组作为 60 个!长度为 82 位。

这意味着在计算29以内的数字之和时!会有很多包含 0 的元素,但代码无论如何都会通过它们相乘。

有办法克服这个问题吗?有人告诉我有一个 malloc 函数吗?但我不太确定!

最佳答案

Malloc函数用于动态分配内存。您可能会看到它就像一个可变大小的数组。但这对于您的情况没有用。

众所周知,阶乘中 0 的个数等于除数的个数,除数等于乘积中所有数字的 5(因为 10 = 2*5 并且 2 的个数多于 5 个)。为了更清楚,让我们看一个例子:

10! = 1*2*3*4*5*6*7*8*9*10

如果我们将所有因素分解:

10! = 1 * 2 * 3 * 2^2 * 5 * 2*3 * 7 * 2^3 * 3^2 * 2*5 = 2^9 * 3^4 * 5^2 * 7

如果你想计算10!的数字和,你可以去掉2个5和2个2,然后计算乘积:

2^7 * 3^4 * 7

这将从最终产品中消除所有 0,但需要更长的时间,因为您必须进行更多计算。

关于c - 如何通过忽略其中包含 0 的元素来提高数组效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com