我需要计算数字 N 的除数总数(不关心除数的值是多少),并对所有这些数字 N 在 40-80 次运算内完成。我该怎么做?这不是一个家庭作业问题。我尝试了Pollard 的 Rho算法,但即使这样对于我的目的来说也太慢了。这是我的 python 代码。如果可能的话,我该如何提高其性能?
def is_prime(n):
if n < 2:
return False
ps = [2,3,5,7,11,13,17,19,23,29,31,37,41,
43,47,53,59,61,67,71,73,79,83,89,97]
def is_spsp(n, a):
d, s = n-1, 0
while d%2 == 0:
d /= 2; s += 1
t = pow(int(a),int(d),int(n))
if t == 1:
return True
while s > 0:
if t == n-1:
return True
t = (t*t) % n
s -= 1
return False
if n in ps: return True
for p …Run Code Online (Sandbox Code Playgroud)