restart:with(NumberTheory);
N2ZuSStBcmVDb3ByaW1lRzYiSTNDYWxraW5XaWxmU2VxdWVuY2VHRiRJMUNhcm1pY2hhZWxMYW1iZGFHRiRJMUNoaW5lc2VSZW1haW5kZXJHRiRJMkNvbnRpbnVlZEZyYWN0aW9uR0YkSTxDb250aW51ZWRGcmFjdGlvblBvbHlub21pYWxHRiRJNUN5Y2xvdG9taWNQb2x5bm9taWFsR0YkSSlEaXZpc29yc0dGJEk0RmFjdG9yTm9ybUV1Y2xpZGVhbkdGJEk3SG9tb2dlbmVvdXNEaW9waGFudGluZUdGJEkuSW1hZ2luYXJ5VW5pdEdGJEk5SW5ob21vZ2VuZW91c0Rpb3BoYW50aW5lR0YkSS5JbnRlZ3JhbEJhc2lzR0YkSS9JbnZlcnNlVG90aWVudEdGJEk3SXNDeWNsb3RvbWljUG9seW5vbWlhbEdGJEkrSXNNZXJzZW5uZUdGJEktSXNTcXVhcmVGcmVlR0YkSSpJdGhGZXJtYXRHRiRJLEl0aE1lcnNlbm5lR0YkSS1KYWNvYmlTeW1ib2xHRiRJMEtyb25lY2tlclN5bWJvbEdGJEknTGFuZGF1R0YkSTBMYXJnZXN0TnRoUG93ZXJHRiRJL0xlZ2VuZHJlU3ltYm9sR0YkSSxNJm91bWw7Yml1c0dGJEkvTW9kRXh0ZW5kZWRHQ0RHRiRJK01vZHVsYXJMb2dHRiRJLE1vZHVsYXJSb290R0YkSTJNb2R1bGFyU3F1YXJlUm9vdEdGJEkoTW9lYml1c0dGJEk0TXVsdGlwbGljYXRpdmVPcmRlckdGJEkoTXxed3xhdmJpdXNHRiRJNE5lYXJlc3RMYXR0aWNlUG9pbnRHRiRJLk5leHRTYWZlUHJpbWVHRiRJP051bWJlck9mSXJyZWR1Y2libGVQb2x5bm9taWFsc0dGJEk1TnVtYmVyT2ZQcmltZUZhY3RvcnNHRiRJJk9tZWdhR0YkSSRQaGlHRiRJLlByaW1lQ291bnRpbmdHRiRJLVByaW1lRmFjdG9yc0dGJEkuUHJpbWl0aXZlUm9vdEdGJEk0UHNldWRvUHJpbWl0aXZlUm9vdEdGJEkxUXVhZHJhdGljUmVzaWR1ZUdGJEkoUmFkaWNhbEdGJEkxUmVwZWF0aW5nRGVjaW1hbEdGJEktUm9vdHNPZlVuaXR5R0YkSTFTaW1wbGVzdFJhdGlvbmFsR0YkSS5TdW1PZkRpdmlzb3JzR0YkSS1TdW1PZlNxdWFyZXNHRiRJKlRodWVTb2x2ZUdGJEkoVG90aWVudEdGJEknbGFtYmRhR0YkSSNtdUdGJEkkcGhpR0YkSSNwaUdGJEkmc2lnbWFHRiRJJHRhdUdGJEkndmFycGhpR0Yk
p := 3; n:= 4; Q := p^n;
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJwR0YoIiIkNyNGLg==
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJuR0YoIiIlNyNGLg==
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJRR0YoIiMiKTcjRi4=
Construct splitting field of x^p^n - x
factor(x^(Q-1) - 1);
KjYsJkkieEc2IiIiIiEiIkYmRiYsLCokRiQiIiVGJiokRiQiIiRGJiokRiQiIiNGJkYkRiZGJkYmRiYsJkYmRiZGJEYmRiYsLEYpRiZGK0YnRi1GJkYkRidGJkYmRiYsJkYtRiZGJkYmRiYsLCokRiQiIilGJiokRiQiIidGJ0YpRiZGLUYnRiZGJkYmLCZGKUYmRiZGJkYmLCwqJEYkIiM7RiYqJEYkIiM3RidGM0YmRilGJ0YmRiZGJiwmRjNGJkYmRiZGJiwsKiRGJCIjS0YmKiRGJCIjQ0YnRjlGJkYzRidGJkYmRiY=
Factors are the cyclotomic polynomials of order a divisor of Q - 1. E.g.,
(Q-1)/2;CyclotomicPolynomial((Q-1)/2,x);
IiNT
LCwqJEkieEc2IiIjOyIiIiokRiQiIzchIiIqJEYkIiIpRicqJEYkIiIlRipGJ0Yn
For prime order, the cyclotomic polynomials are (x^p - 1) / (x - 1), which are irreducible over the integers by Eisenstein's criterion
f23:=CyclotomicPolynomial(23,x); expand(subs(x=u+1,f23)); % mod 23;
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRmMjNHRigsUCokSSJ4R0YoIiNBIiIiKiRGMCIjQEYyKiRGMCIjP0YyKiRGMCIjPkYyKiRGMCIjPUYyKiRGMCIjPEYyKiRGMCIjO0YyKiRGMCIjOkYyKiRGMCIjOUYyKiRGMCIjOEYyKiRGMCIjN0YyKiRGMCIjNkYyKiRGMCIjNUYyKiRGMCIiKkYyKiRGMCIiKUYyKiRGMCIiKEYyKiRGMCIiJ0YyKiRGMCIiJkYyKiRGMCIiJUYyKiRGMCIiJEYyKiRGMCIiI0YyRjBGMkYyRjI3I0Yu
LFAqJEkidUc2IiIjQSIiIiokRiQiI0AiI0IqJEYkIiM/IiRgIyokRiQiIz4iJXI8KiRGJCIjPSIlYikpKiRGJCIjPCImXE8kKiRGJCIjOyInWjQ1KiRGJCIjOiInZF5DKiRGJCIjOSInOS5cKiRGJCIjOCInIT48KSokRiQiIzciKG1TOSIqJEYkIiM2Iih5P04iKiRGJCIjNUZIKiRGJCIiKkZFKiRGJCIiKUZCKiRGJCIiKEY/KiRGJCIiJ0Y8KiRGJCIiJkY5KiRGJCIiJUY2KiRGJCIiJEYzKiRGJCIiI0YwRiRGLUYqRic=
KiRJInVHNiIiI0E=
The primitive root of unity has minimum polynomial the cyclotomic polynomial (one of the factors of x^(Q-1) - 1).
f_root_of_unity := CyclotomicPolynomial(Q-1,z);
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+STBmX3Jvb3Rfb2ZfdW5pdHlHRigsLCokSSJ6R0YoIiNLIiIiKiRGMCIjQyEiIiokRjAiIztGMiokRjAiIilGNUYyRjI3I0Yu
It is not irreducible modulo 3, but all factors have the same degree, which is the order of p modulo Q-1: 3, 9, 27, 81 mod 80 = 1.
Factor(x^(Q-1)- 1) mod 3;
KlAsKCokSSJ4RzYiIiIlIiIiKiRGJSIiJEYoIiIjRihGKCwsRiRGKEYpRigqJEYlRitGKEYlRitGK0YoRigsKEYkRihGJUYrRitGKEYoLChGLUYoRiVGK0YrRihGKCwqRiRGKEYpRitGJUYoRihGKEYoLCxGJEYoRilGKEYtRitGJUYrRitGKEYoLCpGJEYoRilGKEYtRihGKEYoRigsKEYkRihGLUYrRitGKEYoLCxGJEYoRilGKEYtRihGJUYoRihGKEYoLCpGJEYoRilGKEYlRitGKEYoRigsLEYkRihGKUYrRi1GKEYlRihGK0YoRigsKkYkRihGLUYoRiVGK0YoRihGKCwoRiRGKEYpRitGK0YoRigsJkYoRihGJUYoRigsKEYtRihGJUYoRitGKEYoLCpGJEYoRi1GKEYlRihGKEYoRigsKEYkRihGJUYoRitGKEYoLCpGJEYoRilGK0YtRihGKEYoRigsJkYlRihGK0YoRigsKEYkRihGLUYoRitGKEYoLCxGJEYoRilGK0YtRihGJUYrRihGKEYoLCxGJEYoRilGK0YtRitGJUYoRitGKEYoLCZGLUYoRihGKEYo
Write a symbol for the root of unity
gen_z:=product(x - z^'i', 'i' = 1..Q-1);
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSZnZW5fekdGKCpcdSwmSSJ4R0YoIiIiSSJ6R0YoISIiRjEsJiokRjIiI1xGM0YwRjFGMSwmKiRGMiIjXUYzRjBGMUYxLCYqJEYyIiNeRjNGMEYxRjEsJiokRjIiI19GM0YwRjFGMSwmKiRGMiIjYEYzRjBGMUYxLCYqJEYyIiNhRjNGMEYxRjEsJiokRjIiI2JGM0YwRjFGMSwmKiRGMiIjY0YzRjBGMUYxLCYqJEYyIiNkRjNGMEYxRjEsJiokRjIiI2VGM0YwRjFGMSwmKiRGMiIjZkYzRjBGMUYxLCYqJEYyIiNnRjNGMEYxRjEsJiokRjIiI2hGM0YwRjFGMSwmKiRGMiIjaUYzRjBGMUYxLCYqJEYyIiNqRjNGMEYxRjEsJiokRjIiI2tGM0YwRjFGMSwmKiRGMiIjbEYzRjBGMUYxLCYqJEYyIiNtRjNGMEYxRjEsJiokRjIiI25GM0YwRjFGMSwmKiRGMiIjb0YzRjBGMUYxLCYqJEYyIiNwRjNGMEYxRjEsJiokRjIiI3FGM0YwRjFGMSwmKiRGMiIjckYzRjBGMUYxLCYqJEYyIiNzRjNGMEYxRjEsJiokRjIiI3RGM0YwRjFGMSwmKiRGMiIjdUYzRjBGMUYxLCYqJEYyIiN2RjNGMEYxRjEsJiokRjIiI3dGM0YwRjFGMSwmKiRGMiIjeEYzRjBGMUYxLCYqJEYyIiN5RjNGMEYxRjEsJiokRjIiI3pGM0YwRjFGMSwmKiRGMiIjISlGM0YwRjFGMSwmKiRGMiIiI0YzRjBGMUYxLCYqJEYyIiIkRjNGMEYxRjEsJiokRjIiIiVGM0YwRjFGMSwmKiRGMiIiJkYzRjBGMUYxLCYqJEYyIiInRjNGMEYxRjEsJiokRjIiIihGM0YwRjFGMSwmKiRGMiIiKUYzRjBGMUYxLCYqJEYyIiIqRjNGMEYxRjEsJiokRjIiIzVGM0YwRjFGMSwmKiRGMiIjNkYzRjBGMUYxLCYqJEYyIiM3RjNGMEYxRjEsJiokRjIiIzhGM0YwRjFGMSwmKiRGMiIjOUYzRjBGMUYxLCYqJEYyIiM6RjNGMEYxRjEsJiokRjIiIztGM0YwRjFGMSwmKiRGMiIjPEYzRjBGMUYxLCYqJEYyIiM9RjNGMEYxRjEsJiokRjIiIz5GM0YwRjFGMSwmKiRGMiIjP0YzRjBGMUYxLCYqJEYyIiNARjNGMEYxRjEsJiokRjIiI0FGM0YwRjFGMSwmKiRGMiIjQkYzRjBGMUYxLCYqJEYyIiNDRjNGMEYxRjEsJiokRjIiI0RGM0YwRjFGMSwmKiRGMiIjRUYzRjBGMUYxLCYqJEYyIiNGRjNGMEYxRjEsJiokRjIiI0dGM0YwRjFGMSwmKiRGMiIjSEYzRjBGMUYxLCYqJEYyIiNJRjNGMEYxRjEsJiokRjIiI0pGM0YwRjFGMSwmKiRGMiIjS0YzRjBGMUYxLCYqJEYyIiNMRjNGMEYxRjEsJiokRjIiI01GM0YwRjFGMSwmKiRGMiIjTkYzRjBGMUYxLCYqJEYyIiNPRjNGMEYxRjEsJiokRjIiI1BGM0YwRjFGMSwmKiRGMiIjUUYzRjBGMUYxLCYqJEYyIiNSRjNGMEYxRjEsJiokRjIiI1NGM0YwRjFGMSwmKiRGMiIjVEYzRjBGMUYxLCYqJEYyIiNVRjNGMEYxRjEsJiokRjIiI1ZGM0YwRjFGMSwmKiRGMiIjV0YzRjBGMUYxLCYqJEYyIiNYRjNGMEYxRjEsJiokRjIiI1lGM0YwRjFGMSwmKiRGMiIjWkYzRjBGMUYxLCYqJEYyIiNbRjNGMEYxRjE3I0Yu
Modulo the minimum polynomial, we get back x^(Q-1) - 1
rem(expand(gen_z), f_root_of_unity, z);
LCYqJEkieEc2IiIjISkiIiIhIiJGJw==
For the cyclotomic polynomial, the other roots are the remaining primitive roots
Phi_f := 1: for i from 1 to Q-1 do
if igcd(i,Q-1)=1
then Phi_f := Phi_f * (x - z^i):
fi: od: Phi_f;
KlxvLCZJInhHNiIiIiJJInpHRiUhIiJGJiwmKiRGJyIiJEYoRiRGJkYmLCYqJEYnIiIoRihGJEYmRiYsJiokRiciIipGKEYkRiZGJiwmKiRGJyIjNkYoRiRGJkYmLCYqJEYnIiM4RihGJEYmRiYsJiokRiciIzxGKEYkRiZGJiwmKiRGJyIjPkYoRiRGJkYmLCYqJEYnIiNARihGJEYmRiYsJiokRiciI0JGKEYkRiZGJiwmKiRGJyIjRkYoRiRGJkYmLCYqJEYnIiNIRihGJEYmRiYsJiokRiciI0pGKEYkRiZGJiwmKiRGJyIjTEYoRiRGJkYmLCYqJEYnIiNQRihGJEYmRiYsJiokRiciI1JGKEYkRiZGJiwmKiRGJyIjVEYoRiRGJkYmLCYqJEYnIiNWRihGJEYmRiYsJiokRiciI1pGKEYkRiZGJiwmKiRGJyIjXEYoRiRGJkYmLCYqJEYnIiNeRihGJEYmRiYsJiokRiciI2BGKEYkRiZGJiwmKiRGJyIjZEYoRiRGJkYmLCYqJEYnIiNmRihGJEYmRiYsJiokRiciI2hGKEYkRiZGJiwmKiRGJyIjakYoRiRGJkYmLCYqJEYnIiNuRihGJEYmRiYsJiokRiciI3BGKEYkRiZGJiwmKiRGJyIjckYoRiRGJkYmLCYqJEYnIiN0RihGJEYmRiYsJiokRiciI3hGKEYkRiZGJiwmKiRGJyIjekYoRiRGJkYm
cyc_80:=rem(expand(Phi_f), f_root_of_unity, z);
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSdjeWNfODBHRigsLCokSSJ4R0YoIiNLIiIiKiRGMCIjQyEiIiokRjAiIztGMiokRjAiIilGNUYyRjI3I0Yu
Get the minimum polynomial modulo 3
Factor(cyc_80) mod 3; irred := op(1,%);
KjIsKCokSSJ4RzYiIiIlIiIiKiRGJSIiJEYoIiIjRihGKCwsRiRGKEYpRigqJEYlRitGKEYlRitGK0YoRigsKEYkRihGJUYrRitGKEYoLCxGJEYoRilGKEYtRitGJUYrRitGKEYoLCxGJEYoRilGK0YtRihGJUYoRitGKEYoLChGJEYoRilGK0YrRihGKCwoRiRGKEYlRihGK0YoRigsLEYkRihGKUYrRi1GK0YlRihGK0YoRig=
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSZpcnJlZEdGKCwoKiRJInhHRigiIiUiIiIqJEYwIiIkRjIiIiNGMjcjRi4=
g := subs(x=z,irred);
LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJnR0YoLCgqJEkiekdGKCIiJSIiIiokRjAiIiRGMiIiI0YyNyNGLg==
Factor(irred,RootOf(g,z)) mod 3;
KiosKiokLUknUm9vdE9mRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiNiMsKCokSSNfWkdGJyIiJSIiIiokRi4iIiRGMCIiI0YwRjJGMyokRiVGM0YzSSJ4R0YqRjBGMEYwRjAsJkYkRjNGNUYwRjAsKkYkRjNGNEYwRiVGMEY1RjBGMCwmRjVGMEYlRjNGMA==
All powers of the modulo 3 root still have generate x^(Q-1) - 1. Therefore F_{p^n} has a multiplicative primitive root
Rem(expand(gen_z),g,z) mod 3;
LCYqJEkieEc2IiIjISkiIiIiIiNGJw==
Some cyclotomic polynomials factor by formula modulo 2: 2^(3 7^i) equiv 1 mod 7^i
for i from 1 to 4 do f:=CyclotomicPolynomial(7^i,x); print(i, f, Factor(f) mod 2); od:
NiUiIiIsMCokSSJ4RzYiIiInRiMqJEYmIiImRiMqJEYmIiIlRiMqJEYmIiIkRiMqJEYmIiIjRiNGJkYjRiNGIyomLChGLUYjRiZGI0YjRiNGIywoRi1GI0YvRiNGI0YjRiM=
NiUiIiMsMCokSSJ4RzYiIiNVIiIiKiRGJiIjTkYpKiRGJiIjR0YpKiRGJiIjQEYpKiRGJiIjOUYpKiRGJiIiKEYpRilGKSomLChGLkYpRjBGKUYpRilGKSwoRi5GKUYyRilGKUYpRik=
NiUiIiQsMCokSSJ4RzYiIiQlSCIiIiokRiYiJFgjRikqJEYmIiQnPkYpKiRGJiIkWiJGKSokRiYiIykqRikqJEYmIiNcRilGKUYpKiYsKEYuRilGMkYpRilGKUYpLChGLkYpRjBGKUYpRilGKQ==
NiUiIiUsMCokSSJ4RzYiIiVlPyIiIiokRiYiJTo8RikqJEYmIiVzOEYpKiRGJiIlSDVGKSokRiYiJCdvRikqJEYmIiRWJEYpRilGKSomLChGLkYpRjBGKUYpRilGKSwoRi5GKUYyRilGKUYpRik=
for i from 1 to 4 do 8^(7^(i-1)) - 1 mod 7^i; od;
IiIh
IiIh
IiIh
IiIh
JSFH