我试图找到 100!
之前的数字(阶乘),但在 20!
之后它给出了一个错误,因为该值太大而无法处理。我如何存储这样的数字?
最佳答案
20 阶乘的长度为 19 位。 100阶乘长158位,占500位!它实际上是:
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000
00000000
这里没有任何标准类型适合您,您必须执行自己的例程来处理如此大的数字。
例如,您需要接受将两个 32 位值相乘可能会产生 64 位结果。
这是在 8 位处理器时代计算大数的常见做法。 它被称为 arbitrary precision arithemtic.
Here的链接来描述这是如何完成的。不可否认,它是针对汇编程序的,但在这里仍然适用。您需要考虑系统上 int
的默认大小。
关于c - 存储一个大于20的数字! (阶乘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133984/