IsPrimitiveRootMod( r, m )
IsPrimitiveRootMod
returns true
if the integer r is a primitive
root modulo the positive integer m and false
otherwise. If r is
less than 0 or larger than m it is replaced by its remainder.
The integers relatively prime to m form a group under multiplication
modulo m, called the prime residue group. It can be computed with
PrimeResidues
(see PrimeResidues). phi(m) (see Phi) is the
order of this group, lambda(m) (see Lambda) the exponent. If and
only if m is 2, 4, an odd prime power p^e, or twice an odd prime
power 2 p^e, this group is cyclic. In this case the generators of the
group, i.e., elements of order phi(m), are called primitive roots
(see also PrimitiveRootMod).
gap> IsPrimitiveRootMod( 2, 541 ); true gap> IsPrimitiveRootMod( -539, 541 ); true # same computation as above gap> IsPrimitiveRootMod( 4, 541 ); false gap> ForAny( [1..29], r -> IsPrimitiveRootMod( r, 30 ) ); false # there does not exist a primitive root modulo 30
GAP 3.4.4