【发布时间】:2010-08-08 13:47:35
【问题描述】:
可能重复:
“BigInt” in C?
你好!
我正在使用 unsigned int 计算 C 中最多 46 的斐波那契数,但我无法计算 F(47),因为它很长。那么,有没有办法在 C 中获得大于 2^32 的数字?
注意:我使用的是 32 位处理器。
【问题讨论】:
可能重复:
“BigInt” in C?
你好!
我正在使用 unsigned int 计算 C 中最多 46 的斐波那契数,但我无法计算 F(47),因为它很长。那么,有没有办法在 C 中获得大于 2^32 的数字?
注意:我使用的是 32 位处理器。
【问题讨论】:
(unsigned) long long,但也有限制(2^64)。如果还不够,还需要寻找BigInt库。
【讨论】:
__uint128_t 将其推送到 128 位...
#include <stdint.h>
uint64_t my64bit;
【讨论】:
您可以尝试使用 64 位无符号整数(检查您的 C 实现以获得支持),或者简单地使用像 GMP 这样的 BigNum 包。
过去,我出于各种目的自己制作了 BigNum 库,但 GMP 使我的微薄努力付诸东流。
【讨论】:
我喜欢用户 R.. 对于这个问题 here 在 bigints 上操作的答案。当然,如果要将其扩展到非常大的数字,则必须实现自己的 add 函数。它非常清楚地解释了这些步骤。
【讨论】:
您应该实现自己的能够容纳大数字的数据类型或使用诸如this one 之类的库。
【讨论】: