这是我为查找第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)之类的答案吗?
谢谢
http://gmplib.org/
GMP是一个用于任意精度算术的免费库,可处理带符号整数,有理数和浮点数。除了运行GMP机器中的可用内存所暗示的精度外,对精度没有实际限制。GMP具有丰富的功能集,并且这些功能具有常规接口。 GMP的主要目标应用程序是密码学应用程序和研究,Internet安全应用程序,代数系统,计算代数研究等。
GMP是一个用于任意精度算术的免费库,可处理带符号整数,有理数和浮点数。除了运行GMP机器中的可用内存所暗示的精度外,对精度没有实际限制。GMP具有丰富的功能集,并且这些功能具有常规接口。
GMP的主要目标应用程序是密码学应用程序和研究,Internet安全应用程序,代数系统,计算代数研究等。