Karim Belabas on Sat, 12 Oct 2024 17:52:14 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: computing all square root modulo a composite |
* Karim Belabas [2024-10-12 17:41]: > * Max Alekseyev [2024-10-12 16:50]: > > On Tue, Oct 1, 2024 at 4:56 AM Bill Allombert < > > Bill.Allombert@math.u-bordeaux.fr> wrote: > > > > > > > > Internally, we have a function Zn_quad_roots that compute all the solution > > > of x^2+b*x+c mod N > > > for composite N. > > > Maybe we could add it to GP if we find a GP interface to it. > > > > > > > > Bill, I'd truly appreciate having such a function. > > You have it already: > > install(Zn_quad_roots, GGG) > Zn_quad_roots([N, factor(N)], 0, -B) > > should output all square roots of B mod N. (Didn't test :-) > Of course, [N, factor(N)] should be precomputed. Should have tested: this function returns NULL when -B is not a quadratic residue mod N, which will crash gp. So one needs a 2 lines wrapper to cater for this case. When not NULL, output format is [M, v] where x is a square root of B mod N iff x mod M belongs to the vector v. When (4B, N) = 1, we have M = N, else it will be a proper divisor. Cheers, K.B. -- Pr. Karim Belabas, U. Bordeaux, Vice-président en charge du Numérique Institut de Mathématiques de Bordeaux UMR 5251 - (+33) 05 40 00 29 77 http://www.math.u-bordeaux.fr/~kbelabas/