波拉德';Python中的s-Rho启发式算法
这是一个国产函数,但存在一些问题。我的猜测是我在循环中的某个地方做了手脚。它并没有给出一致的答案——我知道这就是“启发式”的意思,但我认为这对n==57应该没有问题波拉德';Python中的s-Rho启发式算法,python,Python,这是一个国产函数,但存在一些问题。我的猜测是我在循环中的某个地方做了手脚。它并没有给出一致的答案——我知道这就是“启发式”的意思,但我认为这对n==57应该没有问题 def Rho_Heuristic(n): import random cum_d = 1 x = random.randint(0, n-1) y = x k = 2 i = 1 while not(cum_d == n): i = i + 1 x
def Rho_Heuristic(n):
import random
cum_d = 1
x = random.randint(0, n-1)
y = x
k = 2
i = 1
while not(cum_d == n):
i = i + 1
x = (x*x-1)%n
d = GCD(y-x, n)
if (not(d == 1) and not(d == n)):
print d
cum_d = (d * cum_d)
if i==k:
y = x
k = 2*k;
如果您想要任何给定输入的确定性输出,请调用:
random.seed(0)
当你开始你的程序时。波拉德的Rhos启发式是一种启发式。返回的因子总是正确的,很少返回所有因子。公屋是好的,如果你需要找到具有某些特征的因素。当我实施概念验证RSA攻击时,我一直在运行它,直到得到有意义的素数。你的问题是什么?当对一个随机整数进行采样时,您如何期望得到一致的答案?另外,对于其他没听说过这个算法的人来说:这个实现似乎是从:。