Function: ffprimroot
Section: number_theoretical
C-Name: ffprimroot
Prototype: GD&
Help: ffprimroot(x,{&o}): return a primitive root of the multiplicative group
 of the definition field of the finite field element x (not necessarily the
 same as the field generated by x). If present, o is set to [ord, fa], where
 ord is the order of the group, and fa its factorization
 (useful in fflog and fforder).
Doc: return a primitive root of the multiplicative
 group of the definition field of the finite field element $x$ (not necessarily
 the same as the field generated by $x$). If present, $o$ is set to
 a vector \kbd{[ord, fa]}, where \kbd{ord} is the order of the group
 and \kbd{fa} its factorization \kbd{factor(ord)}. This last parameter is
 useful in \tet{fflog} and \tet{fforder}, see \secref{se:DLfun}.
 \bprog
 ? t = ffgen(ffinit(nextprime(10^7), 5));
 ? g = ffprimroot(t, &o);
 ? o[1]
 %3 = 100000950003610006859006516052476098
 ? o[2]
 %4 =
 [2 1]

 [7 2]

 [31 1]

 [41 1]

 [67 1]

 [1523 1]

 [10498781 1]

 [15992881 1]

 [46858913131 1]

 ? fflog(g^1000000, g, o)
 time = 1,312 ms.
 %5 = 1000000
 @eprog
