pollard_rho
parent
09451a3b37
commit
6404f98d0b
|
@ -43,7 +43,7 @@ def solve(a, b, m):
|
||||||
x0 = b1 * gcd(a1, m1)[0]
|
x0 = b1 * gcd(a1, m1)[0]
|
||||||
return x0 % m
|
return x0 % m
|
||||||
|
|
||||||
def pollard_rho(a, b, p, ord=0):
|
def pollard_rho(a, b, p, ord=None):
|
||||||
u, v = 1, 1
|
u, v = 1, 1
|
||||||
d = c = pow(a, u, p) * pow(b, v, p) % p
|
d = c = pow(a, u, p) * pow(b, v, p) % p
|
||||||
log_c, log_d = [1, 1], [1, 1]
|
log_c, log_d = [1, 1], [1, 1]
|
||||||
|
@ -57,7 +57,7 @@ def pollard_rho(a, b, p, ord=0):
|
||||||
# print(c, d, log_c, log_d)
|
# print(c, d, log_c, log_d)
|
||||||
if c == d: break
|
if c == d: break
|
||||||
|
|
||||||
if ord == 0: ord = order(a, p)
|
if ord == None: ord = order(a, p)
|
||||||
#print(f"{log_c[0]}+{log_c[1]}x≡{log_d[0]}+{log_d[1]}x(mod{ord})")
|
#print(f"{log_c[0]}+{log_c[1]}x≡{log_d[0]}+{log_d[1]}x(mod{ord})")
|
||||||
#print(f"{log_c[1]-log_d[1]}x≡{log_d[0]-log_c[0]}(mod{ord})")
|
#print(f"{log_c[1]-log_d[1]}x≡{log_d[0]-log_c[0]}(mod{ord})")
|
||||||
return solve(log_c[1]-log_d[1], log_d[0]-log_c[0], ord)
|
return solve(log_c[1]-log_d[1], log_d[0]-log_c[0], ord)
|
||||||
|
|
Loading…
Reference in New Issue