← LibraryFactorisation of Polynomials Modulo a PrimeEngineering · MathematicsLesson 3/5← PrevNext →
GuidePublished 6 Aug 20265 min readBy Kevin JoginComputational Number TheoryPolynomial AlgorithmsPolynomial FactorisationFinite Field
Skip to the main content

MathematicsPolynomial Algorithms

Factorisation of Polynomials Modulo a Prime

The three-phase strategy — squarefree, distinct-degree, equal-degree — that factors a polynomial over a finite field in polynomial time.

Executive summary

Three phases, each solving a strictly easier problem than the last

Factoring over a finite field is completely solved in polynomial time, but not by a single algorithm. The standard pipeline first removes repeated factors, then groups the remaining irreducible factors by their degree, and only then separates factors of equal degree — the one phase that requires randomisation. Each phase reduces to GCD computations and modular exponentiation in the quotient ring.

Learning objectives

  • Perform squarefree decomposition, including the characteristic-p special case.
  • Separate factors by degree using gcd with xqd − x.
  • Apply equal-degree splitting and analyse its success probability.
  • Compare Berlekamp's method with the distinct-degree pipeline.
  • Choose an approach based on the field size.

Section 01Phase 1: squarefree decomposition

If f has a repeated factor, that factor divides gcd(ff′). Peeling off repeated factors by successive GCDs gives the squarefree decomposition. In characteristic p there is a complication: if f′ is identically zero then f is a p-th power.

AlgorithmSquarefree decomposition in characteristic pin: f ∈ Fq[x]  →  out: squarefree factors with multiplicities
  1. If f′ = 0, then f = g(xp) for some g. Take p-th roots of the coefficients — the Frobenius is a bijection on Fp — and recurse on g.
  2. Otherwise set c ← gcd(f, f′) and w ← f / c.
  3. Repeatedly extract gcd(w, c), which isolates factors of successive multiplicities.
  4. Output the list of (factor, multiplicity) pairs.
Cost is a small number of GCDs. Skipping this phase does not merely lose efficiency — the later phases assume distinct factors and give wrong answers without it.
Do not import the characteristic-zero version

Over ℚ, f′ = 0 only for constants. Over Fp it happens for every p-th power, and code that omits this branch will divide by a zero polynomial or loop. This is one of the most frequently missed cases in finite-field code.

Section 02Phase 2: distinct-degree factorisation

The polynomial xqd − x is the product of all monic irreducibles whose degree divides d. Taking GCDs for d = 1, 2, 3, … therefore extracts the factors degree by degree.

AlgorithmDistinct-degree factorisationin: squarefree f  →  out: for each d, the product of the degree-d factors
  1. Set g ← f (squarefree) and h ← x.
  2. For d = 1, 2, 3, … while deg g ≥ 2d:
  3.    Set h ← hq mod g. One Frobenius step; h now equals xq^d mod g.
  4.    Set c ← gcd(g, h − x). If c ≠ 1, record c as the product of all irreducible factors of degree d, and set g ← g / c.
  5. If g ≠ 1, it is irreducible of degree greater than the last d tested; record it.
The loop stops at deg g / 2 because a polynomial of degree n with no factor of degree ≤ n/2 must itself be irreducible.
Frobenius is the workhorse

Each iteration raises the current h to the q-th power modulo g. Precomputing the matrix of the Frobenius map on the quotient ring turns each step into a matrix–vector product, which is the standard optimisation for repeated factorisations over the same field.

Section 03Phase 3: equal-degree splitting

A product of r distinct irreducibles all of degree d corresponds by the Chinese remainder theorem to a product of r copies of the field of qd elements. A random element raised to the power (qd − 1)/2 lands on ±1 independently in each component, so a GCD with the result splits the factors apart with high probability.

AlgorithmCantor–Zassenhaus equal-degree splitting (odd q)in: f, a product of r irreducibles of equal degree d  →  out: the factors
  1. If deg f = d, output f as irreducible and return.
  2. Choose a random a ∈ Fq[x] with deg a < deg f.
  3. Set b ← a(qd−1)/2 mod f.
  4. Set c ← gcd(f, b − 1). If c is trivial, return to step 2.
  5. Recurse on c and on f / c.
Each attempt splits a given pair of factors with probability about 1/2, so the expected number of attempts is small. For q even, the exponentiation is replaced by a trace map.
Randomised in time, exact in output

Every factor is confirmed by an exact GCD before being returned, so the algorithm never emits an incorrect factorisation. Randomisation affects only how long it takes.

Section 04Berlekamp's algorithm and method selection

Berlekamp's approach is entirely different: it computes the kernel of the map v ↦ vq − v on the quotient ring. The kernel dimension equals the number of irreducible factors, and each kernel element yields a splitting.

Choosing a factorisation method over F<sub>q</sub>
SituationMethodReason
q small (say under 100)BerlekampDeterministic; the search over field elements is cheap
q largeDistinct-degree plus Cantor–ZassenhausBerlekamp's search space scales with q; the randomised split does not
Only the number of factors is neededBerlekamp kernel dimensionOne linear algebra computation, no splitting required
Only irreducibility is in questionDegree test via FrobeniusFar cheaper than a full factorisation
Only the roots are neededgcd with xq − x, then splitAvoids computing higher-degree factors entirely
Irreducibility is much cheaper than factorisation

To test irreducibility of degree n it suffices to check that xqn = x modulo f and that gcd(f, xqn/ℓ − x) = 1 for each prime ℓ dividing n. No factors are produced — and none are needed.

ReferenceFrequently asked questions

Why must squarefree decomposition come first?

Because distinct-degree factorisation returns the product of the distinct irreducible factors of each degree, with multiplicities lost. Running it on a non-squarefree input silently discards multiplicity information and the reconstructed factorisation will not multiply back to the input.

How does this generalise to extension fields?

Directly: replace p by the field size q throughout. The only care needed is in the characteristic-2 case of equal-degree splitting, where the exponentiation must be replaced by the trace map because (q^d − 1)/2 is not an integer.

Can the same pipeline factor over Z/nZ for composite n?

No. Without a field the quotient ring has zero divisors, GCDs need not exist, and the factorisation is not unique. An attempted GCD that fails does, however, reveal a factor of n.

NavigateContinue in this stream

Curated next steps from this page. The site also surfaces algorithmically related reading below.

ProvenanceSources and further reading

This page is an original KEVOS explanatory article. It presents the underlying mathematics — definitions, algorithms, complexity results and selection criteria — in KEVOS editorial voice. No text is reproduced from any copyrighted source. Where numerical tables are relevant, KEVOS links to live authoritative databases rather than republishing static values.

Page ID
KV-MATH-0021
Taxonomy
ENG-MATH — Engineering / Mathematics
Collection
COL-CANT-001
Topic stream
CANT-POLYNOMIALS
Version
1.1.0 / content 2026.08
Last reviewed
2026-08-06

Continue learning

The Subresultant Algorithm, Resultants and DiscriminantsGuide · MathematicsNEXT LESSON →Hensel Lifting and Factorisation over the IntegersGuide · MathematicsPolynomial Arithmetic and GCD in Unique Factorisation DomainsGuide · MathematicsRoot Finding over the Complex NumbersGuide · Mathematics