This program was created to analyze the reducibility of polynomials in finite fields. There is a polynomial and finite field class, as well as a Euclidean algorithm. These classes and function are to apply the the theorem that f(x) is irreducible if and only if for any d|n with d!=n, gcd(f,x^p^d−x) = 1 and f|x^p^n−x.
A proof for this theorem can be found here https://drive.google.com/file/d/1qumikcTN5DQCxDQScuSVCYEqGjtUHgIN/view?usp=sharing
Give it a try!!!! As of June 23 2021, there is now an interactive program I instituted where you can specify a polynomial and our Reducibility Reader will test the polynomial for irreducibility in a given finite field. Run TryMe_InteractiveIrreducibilityChecker.py to give it a shot!
For a more in depth discussion on this topic please refer to https://drive.google.com/file/d/1pyuoHKK0tJjoAwWCbR_JKdif784hjFz5/view?usp=sharing This document is broken into 3 parts: Part a) Proof of theorem (1) Part b) Analysis of code and its complexity Part c) Analysis of irreducible polynomials and patterns that form
Here is pseudocode that gives the basic logical progression of the program
- Create polynomial, poly=x
- Let i = 0
- If i == n/2 then the polynomial is irreducible. Exit
- i = i + +
- Let poly=polyp mod f(x)
- If n mod i == 0, then go to step (7), otherwise, return to step (3).
- Find gcd(f(x), poly − x)
- If gcd 6= c ∈ Fp, then the polynomial is irreducible. Exit
- Return to step (3).
Note: this uses a generalized conclusion of the proof given above: f(x) is irreducible if and only if gcd(f,x^p^d−x) = 1 for all d < n/2 (not just d|n) and f|x^p^n−x.