无符号长龙不会超越第93个斐波纳契数?

时间:2010-06-26 23:49:17

标签: c++ algorithm fibonacci

这是我为寻找第n个Fibonacci数而编写的代码:

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)这样的答案吗?

谢谢

2 个答案:

答案 0 :(得分:14)

http://gmplib.org/

  

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

     

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

答案 1 :(得分:4)

使用bigint库。网络上有很多内容(例如herehere)或自己动手。

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