Advertisement
Guest User

Untitled

a guest
May 24th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. # Атака Винера
  2.  
  3. d_cr = int(0.485 * numerical_approx(pow(n, 1/4)))
  4. # print d_cr
  5.  
  6. a = e / n
  7. cf = a.continued_fraction()
  8. # print cf
  9.  
  10. dl = len(cf)
  11. t = cf.convergents()
  12. # print t
  13.  
  14. k = []
  15. for i in range(1, len(t)):
  16. k.append(numerator(t[i]))
  17. # print k
  18.  
  19. d = []
  20. for i in range(1, len(t)):
  21. d.append(denominator(t[i]))
  22. # print d
  23.  
  24. i = 1
  25. while denominator(t[i]) < d_cr^2:
  26. f = (e * denominator(t[i]) - 1)/numerator(t[i])
  27. pol = x^2 - ((n - f) + 1) * x + n
  28. rt = pol.roots()
  29. if rt[0][0] in ZZ or rt[1][0] in ZZ:
  30. if rt[0][0] * rt[1][0] == n:
  31. d = denominator(t[i])
  32. print d
  33. break
  34. i += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement