一尘不染

Unsigned Long Long不会超越第93个斐波纳契数吗?

algorithm

这是我为查找第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)之类的答案吗?

谢谢


阅读 323

收藏
2020-07-28

共1个答案

一尘不染

http://gmplib.org/

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

GMP的主要目标应用程序是密码学应用程序和研究,Internet安全应用程序,代数系统,计算代数研究等。

2020-07-28