wiener.tex 535 B

12345678910111213141516171819202122232425262728
  1. \chapter{Wiener's Attack}
  2. \section{Bombelli's Algoritm}
  3. %% cuz python is pseudocode.
  4. \begin{minted}[fontsize=\small]{python}
  5. def intsqrt(a):
  6. i = 0
  7. while a > 0:
  8. g[i] = a % 100
  9. a /= 100
  10. i += 1
  11. x = 0
  12. r = 0
  13. for j in range(L-1, -1, -1):
  14. r = r*100 + g[j]
  15. y = 0
  16. for d in range(1, 10):
  17. yn = d*(20*x + d)
  18. if yn < r: y = yn
  19. else: break
  20. r -= y
  21. x = 10*x + d-1
  22. return (x, r)
  23. \end{minted}
  24. Has complexity $O(\log ^2 n)$.