问题描述
我正在尝试使用 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 (将#修改为@)