我有一段代码可以计算一个大因子,
该赋值声明我必须使用数组,但是它的范围是20,这是非常低效的!到60!所以我必须使用一个有82个元素为60的数组!是82位数。
这意味着在计算29内的数字之和时!会有很多元素包含0,但无论如何代码都将通过它们。
有没有办法克服这个问题?我被告知有关malloc的功能?但我不太确定!
答案 0 :(得分:0)
Malloc函数用于动态分配内存。你可能会看到这像一个可变大小的数组。但这对你的情况没用。
众所周知,阶乘积中的0的数量等于除数的数量等于产品中所有数字中的5的除数(因为10 = 2 * 5且2s多于5s)。更清楚的是,让我们看一个例子:
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 5s和2 2s,并计算产品:
2 ^ 7 * 3 ^ 4 * 7
这将从您的最终产品中删除所有0,但需要更长时间,因为您必须进行更多计算。