首页 > 解决方案 > 如何在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 或更大的正确结果?

标签: pythonanacondalargenumber

解决方案


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


推荐阅读