Solve x² ≡ n (mod p): Euler-criterion check → p−1 = Q·2^S decomposition → order-reduction tweak loop converging to a root.
| var | meaning | value |
|---|---|---|
| M | current 2-group exponent | — |
| c | generator z^Q (order 2^S) | — |
| t | "error" → must reach 1 | — |
| R | running root guess | — |
| step | cost |
|---|---|
| Euler's criterion | O(log p) |
| p≡3 (mod 4) shortcut | O(log p) |
| find non-residue z | O(log p) |
| Tonelli-Shanks loop | O(S² · log p) |
| brute force (try all x) | O(p · log p) |