如何在 python 中处理非常大的整数?

问题描述

我使用斐波那契矩阵的概念编写了一个获取斐波那契数列的代码,灵感来自这篇 Instagram 帖子

def f(n):
import numpy as np
m=np.array([[1,1],[1,0]],dtype=np.int64)
m1=m
for i in range(0,n):
    m1=np.matmul(m1,m)
return m1[0,1]

但是在 n=93 之后,它开始给出负数。如果我使用 np.int32 作为 dtype,那么在 n=47 之后,它开始给出否定和错误的结果。 我正在使用 python 3.9,我希望我的结果是整数(不是浮点数)怎么做才能得到 n=1000 或更大的正确结果?

解决方法

Numpy ctypes 是本地实现的,因此 long 数据类型在达到 64 位时将开始溢出。但是,您可以使用 dtype=object 来使用 python 的任意大整数,但这可能会变得很慢。