![]() | 1 | initial version |
When you finish running G = Zmod(m).unit_group()
all the hard work is already done: a set of generators gi and their orders ni is computed, and elements are internally represented by the exponents of the generators. Exponentiation g^k
of an element g
in G
is internally just multiplying each exponent by k
and reducing modulo ni. Only when you request the value of an element (for example, when printing) the generators, raised to the respective powers, are actually multiplied.
When m=p the unit group is cyclic of order p−1, so there is just a single generator of order p−1.