 
 of
units modulo a prime number
 of
units modulo a prime number  .
The main result is that this group is always cyclic.  
We will use this result later in Chapter 4 
in our proof of quadratic reciprocity.
.
The main result is that this group is always cyclic.  
We will use this result later in Chapter 4 
in our proof of quadratic reciprocity.
We will prove that there is a primitive root modulo every prime
 .  Since the unit group
.  Since the unit group 
 has order
 has order  , this implies that
, this implies that
 is a cyclic group, a fact this will be extremely useful,
since it completely determines the structure of
 is a cyclic group, a fact this will be extremely useful,
since it completely determines the structure of 
 as a
group.
 as a
group. 
If  is an odd prime power, then there is a primitive root
modulo
 is an odd prime power, then there is a primitive root
modulo  (see Exercise 2.28), but there is no primitive root
modulo the prime power
 (see Exercise 2.28), but there is no primitive root
modulo the prime power  , and hence none mod
, and hence none mod  for
 for
 (see Exercise 2.27).
 (see Exercise 2.27).
Section 2.5.1 is the key input to our proof that
 is cyclic; here we show that for every divisor
 is cyclic; here we show that for every divisor  of
 of  there are exactly
there are exactly  elements of
 elements of 
 whose order divides
 whose order divides  .
We then use this result in Section 2.5.2 to produce an
element of
.
We then use this result in Section 2.5.2 to produce an
element of 
 of order
 of order  when
 when  is a prime power that
exactly divides
 is a prime power that
exactly divides  (i.e.,
 (i.e.,  divides
 divides  , but
, but  does not
divide
 does not
divide  ), and multiply together these elements to obtain an element
of
), and multiply together these elements to obtain an element
of 
 of order
 of order  .
.
 .  
For example, below we compute primitive roots modulo
.  
For example, below we compute primitive roots modulo  for
each prime
 for
each prime  .
. 
sage: for p in primes(20): ... print p, primitive_root(p) 2 1 3 2 5 2 7 3 11 2 13 2 17 3 19 2