Chapter 10 Primitive Roots

xxxxxxxxxx
import matplotlib.pyplot as plt
from matplotlib.ticker import IndexLocator, FuncFormatter
def power_table_plot(p=(13,prime_range(5,50))):
mycmap = plt.get_cmap('gist_earth',p-1)
myloc = IndexLocator(floor(p/5),.5)
myform = FuncFormatter(lambda x,y: int(x+1))
cbaropts = { 'ticks':myloc, 'drawedges':True, 'boundaries':srange(.5,p+.5,1)}
P=matrix_plot(matrix(p-1,[mod(a,p)^b for a in range(1,p) for b in srange(p)]), cmap=mycmap, colorbar=True, colorbar_options=cbaropts, ticks=[myloc,myloc], tick_formatter=[None,myform])
show(P,figsize=6)
Sage note 10.0.2. Reminder for colormaps.
Remember, to get a gray-scale plot, just change the part with plt.get_cmap('gist_earth',...)
to use 'gray'
, or some other colormap (see Sage note 8.2.2) of your choice.
Summary: Primitive Roots
This chapter uses groups to uncover one of the most profound insights of Figure 10.0.1.
We begin by defining primitive roots in Definition 10.1.1, and immediately recharacterizing in terms of group theory in Proposition 10.1.4.
A simpler way to test for whether a number is a primitive root is Lemma 10.2.3.
In the next section we see some examples of numbers which do not have primitive roots. More importantly, we tackle the key Lemmas 10.3.4 and 10.3.5 to understand the group
for prime. An example of something we win from this is Fact 10.3.6.Then we prove the famous result that Primitive Roots Exist for Primes.
We conclude the chapter by using primitive roots to help solve interesting congruences, like higher degree polynomials in Subsection 10.5.1 and discrete analogues of the logarithm in Subsection 10.5.2.
There is the usual variety of Exercises, and a short appendix about All the Primitive Roots.