Tonelli-Shanks algorithm: Difference between revisions

m
→‎{{header|OCaml}}: reduce scope of q; ocamlformat
(Add ocaml port)
m (→‎{{header|OCaml}}: reduce scope of q; ocamlformat)
Line 2,680:
else
let s = trailing_zeros pp in
let q = pp asr s in
if s = 1 then
let r = pow_mod_p n (succ p / ~$4) in
Some (r, p - r)
else
let q = pp asr s in
let z =
let rec find_non_square z =
Line 2,707:
in
Some
(loop (pow_mod_p z q) (pow_mod_p n (succ q / two)) (pow_mod_p n q) ~$s)
(pow_mod_p n (succ q / two))
(pow_mod_p n q) ~$s)
 
let () =