6

这是我为查找第 n 个斐波那契数而编写的代码:

unsigned long long fib(int n)
{
    unsigned long long u = 1, v = 1, t;

    for(int i=2; i<=n; i++)
    {
        t = u + v;
        u = v;
        v = t;
    }

    return v;
}

虽然算法运行得很快,但当 n>93 时输出开始变得异常。我认为/知道这是因为 unsigned long long 的 64 位大小。我是 C++ 新手,但有没有办法解决这个问题,所以我可以得到 fib(9999) 之类的答案?

谢谢

4

2 回答 2

14

http://gmplib.org/

GMP 是一个用于任意精度算术的免费库,可对有符号整数、有理数和浮点数进行运算。除了运行 GMP 的机器中的可用内存所暗示的精度外,对精度没有实际限制。GMP具有丰富的功能集,并且功能具有规则的接口。

GMP的主要目标应用是密码学应用和研究、互联网安全应用、代数系统、计算代数研究等...

于 2010-06-26T23:50:24.917 回答
4

使用 bigint 库。网络上有很多(例如,herehere)或您自己的。

编辑:滚动你自己的比我预期的要困难得多。算术不是难点。它以十进制形式打印出结果。

于 2010-06-26T23:52:00.990 回答