Kronecker’s Method of Factoring Polynomials over ![\Q[x] \Q[x]](/cz/latexrender/pictures/301e2bb0b6e9646cb427f264378415c9.png)
Kronecker’s method is beautiful: it’s simple, and it always works. Here’s the idea:
Given a polynomial
, we are trying to decide if
is reducible (can be expressed as the product of two polynomials in
, neither of which is 1 or -1), and if so to determine its factors, or irreducible (any factorization of
is trivial, in that it involves factoring out 1 or -1).
Note that if
is of degree
and we assume it is reducible to
, without loss we can assume that
has degree less than or equal to
— because if not, we would just switch
with the associated
.
Next, find
such that
. Then
.
Construct all
of degrees 0 (excluding -1 and 1) through
such that
is a divisor of
for
; you can use Lagrange polynomial interpolation to do this. Then test (using synthetic divison, for example) all these candidate
to find which divide
.
Pretty neat! Just reading the algorithm makes you want to program it up— in Scheme, no less!
To extend this algorithm for use in factorizing polynomials in
is left as an exercise for the reader :).
Update
As I started to code this up, I realized synthetic division only applies when you are dividing by a linear factor— no biggie, just use polynomial long division. Here’s a simple algorithm to calculate
, where
are such that
:
- if
, then return 
- else,

such that 



February 20th, 2005 at 12:21 pm
In fact synthetic division can be done when dividing by a quadratic (and, although I haven’t tried it, I suspect also by higher degree polynomials).
Here’s a page from a Numerical Analysis book from yesteryear that shows the method.
February 23rd, 2005 at 9:36 am
Thanks for the page; when I programmed in that poly divison algorithm I came up with, it doesn’t seem to work. Maybe it’s just my programming skills suck, but it is nice to have an example to emulate.