returns a record with fields
primes:
the set of prime divisors of the integer n,
exponents:
the corresponding exponents in the factorization
of n and
generators:
generators of the group of prime residues: For
each odd prime p there is one generator, corresponding to a
primitive root of the subgroup (Z/p^(nu_p))^(ast)
of (Z/nZ)^(ast), where nu_p
is the exponent of p in the factorization of n; for p
= 2, we have one generator in the case that 8 does not divide n,
and a list of two generators (corresponding to langleast5,
ast(2^(nu_2)-1)rangle= (Z/2^(nu_2))^(ast))
else.
gap> GeneratorsPrimeResidues( 9 ); # 2 is a primitive root
rec(
primes := [ 3 ],
exponents := [ 2 ],
generators := [ 2 ] )
gap> GeneratorsPrimeResidues( 24 ); # 8 divides 24
rec(
primes := [ 2, 3 ],
exponents := [ 3, 1 ],
generators := [ [ 7, 13 ], 17 ] )
gap> GeneratorsPrimeResidues( 1155 );
rec(
primes := [ 3, 5, 7, 11 ],
exponents := [ 1, 1, 1, 1 ],
generators := [ 386, 232, 661, 211 ] )