如何在 Python 中计算很长的数字

问题描述

我正在尝试使用 python 计算 Pollard rho 数,用于非常长的整数,例如低于 1

65779646778470582047547160396995720887221575959770627441205850493179860146690755880473849736210807898494458426111244201404810495587574110361900128405354081638434164434968839614760264675889940272767106444249

我尝试在我的 intel core i9 10980HK CPU 上进行计算,结果是几分钟的高负载工作没有成功。我正在尝试使用 numba@njit 装饰器来连接 RTX 2070 super(在笔记本电脑上),但它给出了以下错误。

- argument 0: Int value is too large:

代码如下:

import numpy as np
import datetime

def pgcd(a,b):
    if b==0:
        return a
    else:
        r=a%b
        return pgcd(b,r)

def pollardrho(n):
    f = lambda z: z*z+1
    x,y,d = 1,1,1
    c = 0
    while d==1:
        c += 1
        x = f(x) % n
        y = f(f(y)) % n
        d = pgcd(y-x,n)
    return d,c

def test_time(n):
    t = datetime.datetime.now()
    d,c = pollardrho(int(n))
    tps = datetime.datetime.now() - t
    print(tps,c,d)

file = open("some_powersmooths_large.txt","r")

for line in file.readlines():
    if not line.startswith("#"):
        print(line)
        print("\n")
        test_time(line)
        print("\n")

我如何处理这种类型的大数计算。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)