Polynomial Factorization
Get Polynomial Factorization essential facts below. View Videos or join the Polynomial Factorization discussion. Add Polynomial Factorization to your PopFlock.com topic list for future reference or share this resource on social media.
Polynomial Factorization

In mathematics and computer algebra, factorization of polynomials or polynomial factorization expresses a polynomial with coefficients in a given field or in the integers as the product of irreducible factors with coefficients in the same domain. Polynomial factorization is one of the fundamental components of computer algebra systems.

The first polynomial factorization algorithm was published by Theodor von Schubert in 1793.[1]Leopold Kronecker rediscovered Schubert's algorithm in 1882 and extended it to multivariate polynomials and coefficients in an algebraic extension. But most of the knowledge on this topic is not older than circa 1965 and the first computer algebra systems:

When the long-known finite step algorithms were first put on computers, they turned out to be highly inefficient. The fact that almost any uni- or multivariate polynomial of degree up to 100 and with coefficients of a moderate size (up to 100 bits) can be factored by modern algorithms in a few minutes of computer time indicates how successfully this problem has been attacked during the past fifteen years. (Erich Kaltofen, 1982)

Nowadays, modern algorithms and computers can quickly factor univariate polynomials of degree more than 1000 having coefficients with thousands of digits.[2]

## Formulation of the question

Polynomial rings over the integers or over a field are unique factorization domains. This means that every element of these rings is a product of a constant and a product of irreducible polynomials (those that are not the product of two non-constant polynomials). Moreover, this decomposition is unique up to multiplication of the factors by invertible constants.

Factorization depends on the base field. For example, the fundamental theorem of algebra, which states that every polynomial with complex coefficients has complex roots, implies that a polynomial with integer coefficients can be factored (with root-finding algorithms) into linear factors over the complex field C. Similarly, over the field of reals, the irreducible factors have degree at most two, while there are polynomials of any degree that are irreducible over the field of rationals Q.

The question of polynomial factorization makes sense only for coefficients in a computable field whose every element may be represented in a computer and for which there are algorithms for the arithmetic operations. Fröhlich and Shepherson give examples of such fields for which no factorization algorithm can exist.

The fields of coefficients for which factorization algorithms are known include prime fields (i.e., the field of rationals and prime modular arithmetic) and their finitely generated field extensions. Integer coefficients are also tractable. Kronecker's classical method is interesting only from a historical point of view; modern algorithms proceed by a succession of:

• Square-free factorization
• Factorization over finite fields

and reductions:

• From the multivariate case to the univariate case.
• From coefficients in a purely transcendental extension to the multivariate case over the ground field (see below).
• From coefficients in an algebraic extension to coefficients in the ground field (see below).
• From rational coefficients to integer coefficients (see below).
• From integer coefficients to coefficients in a prime field with p elements, for a well chosen p (see below).

## Primitive part-content factorization

In this section, we show that factoring over Q (the rational numbers) and over Z (the integers) is essentially the same problem.

The content of a polynomial p ? Z[X], denoted "cont(p)", is, up to its sign, the greatest common divisor of its coefficients. The primitive part of p is primpart(p)=p/cont(p), which is a primitive polynomial with integer coefficients. This defines a factorization of p into the product of an integer and a primitive polynomial. This factorization is unique up to the sign of the content. It is a usual convention to choose the sign of the content such that the leading coefficient of the primitive part is positive.

For example,

${\displaystyle -10x^{2}+5x+5=(-5)(2x^{2}-x-1)\,}$

is a factorization into content and primitive part.

Every polynomial q with rational coefficients may be written

${\displaystyle q={\frac {p}{c}},}$

where p ? Z[X] and c ? Z: it suffices to take for c a multiple of all denominators of the coefficients of q (for example their product) and p = cq. The content of q is defined as:

${\displaystyle {\text{cont}}(q)={\frac {{\text{cont}}(p)}{c}},}$

and the primitive part of q is that of p. As for the polynomials with integer coefficients, this defines a factorization into a rational number and a primitive polynomial with integer coefficients. This factorization is also unique up to the choice of a sign.

For example,

${\displaystyle {\frac {x^{5}}{3}}+{\frac {7x^{2}}{2}}+2x+1={\frac {2x^{5}+21x^{2}+12x+6}{6}}}$

is a factorization into content and primitive part.

Gauss proved that the product of two primitive polynomials is also primitive (Gauss's lemma). This implies that a primitive polynomial is irreducible over the rationals if and only if it is irreducible over the integers. This implies also that the factorization over the rationals of a polynomial with rational coefficients is the same as the factorization over the integers of its primitive part. Similarly, the factorization over the integers of a polynomial with integer coefficients is the product of the factorization of its primitive part by the factorization of its content.

In other words, an integer GCD computation reduces the factorization of a polynomial over the rationals to the factorization of a primitive polynomial with integer coefficients, and the factorization over the integers to the factorization of an integer and a primitive polynomial.

Everything that precedes remains true if Z is replaced by a polynomial ring over a field F and Q is replaced by a field of rational functions over F in the same variables, with the only difference that "up to a sign" must be replaced by "up to the multiplication by an invertible constant in F". This reduces the factorization over a purely transcendental field extension of F to the factorization of multivariate polynomials over F.

## Square-free factorization

If two or more factors of a polynomial are identical, then the polynomial is a multiple of the square of this factor. In the case of univariate polynomials, this results in multiple roots. In this case, then the multiple factor is also a factor of the polynomial's derivative (with respect to any of the variables, if several). In the case of univariate polynomials over the rationals (or more generally over a field of characteristic zero), Yun's algorithm exploits this to efficiently factorize the polynomial into square-free factors, that is, factors that are not a multiple of a square. To factorize the initial polynomial, it suffices to factorize each square-free factor. Square-free factorization is therefore the first step in most polynomial factorization algorithms.

Yun's algorithm extends this to the multivariate case by considering a multivariate polynomial as a univariate polynomial over a polynomial ring.

In the case of a polynomial over a finite field, Yun's algorithm applies only if the degree is smaller than the characteristic, because, otherwise, the derivative of a non-zero polynomial may be zero (over the field with p elements, the derivative of a polynomial in xp is always zero). Nevertheless, a succession of GCD computations, starting from the polynomial and its derivative, allows one to compute the square-free decomposition; see Polynomial factorization over finite fields#Square-free factorization.

## Classical methods

This section describes textbook methods that can be convenient when computing by hand. These methods are not used for computer computations because they use integer factorization, which is currently slower than polynomial factorization.

### Obtaining linear factors

All linear factors with rational coefficients can be found using the rational root test. If the polynomial to be factored is ${\displaystyle a_{n}x^{n}+a_{n-1}x^{n-1}+\cdots +a_{1}x+a_{0}}$, then all possible linear factors are of the form ${\displaystyle b_{1}x-b_{0}}$, where ${\displaystyle b_{1}}$ is an integer factor of ${\displaystyle a_{n}}$ and ${\displaystyle b_{0}}$ is an integer factor of ${\displaystyle a_{0}}$. All possible combinations of integer factors can be tested for validity, and each valid one can be factored out using polynomial long division. If the original polynomial is the product of factors at least two of which are of degree 2 or higher, this technique only provides a partial factorization; otherwise the factorization is complete. In particular, if there is exactly one non-linear factor, it will be the polynomial left after all linear factors have been factorized out. In the case of a cubic polynomial, if the cubic is factorizable at all, the rational root test gives a complete factorization, either into a linear factor and an irreducible quadratic factor, or into three linear factors.

### Kronecker's method

Since integer polynomials must factor into integer polynomial factors, and evaluating integer polynomials at integer values must produce integers, the integer values of a polynomial can be factored in only a finite number of ways, and produce only a finite number of possible polynomial factors.

For example, consider

${\displaystyle f(x)=x^{5}+x^{4}+x^{2}+x+2}$.

If this polynomial factors over Z, then at least one of its factors must be of degree two or less. We need three values to uniquely fit a second degree polynomial. We'll use ${\displaystyle f(0)=2}$, ${\displaystyle f(1)=6}$ and ${\displaystyle f(-1)=2}$. If one of those values is 0, then we have found a root (and so a factor). If none are 0, then each one has a finite number of divisors. Now, 2 can only factor as

1×2, 2×1, (-1)×(-2), or (-2)×(-1).

Therefore, if a second degree integer polynomial factor exists, it must take one of the values

1, 2, -1, or -2

at ${\displaystyle x=0}$, and likewise at ${\displaystyle x=-1}$. There are eight different ways to factor 6 (one for each divisor of 6), so there are

4×4×8 = 128

possible combinations, of which half can be discarded as the negatives of the other half, corresponding to 64 possible second degree integer polynomials that must be checked. These are the only possible integer polynomial factors of ${\displaystyle f(x)}$. Testing them exhaustively reveals that

${\displaystyle p(x)=x^{2}+x+1}$

constructed from ${\displaystyle p(0)=1}$, ${\displaystyle p(1)=3}$ and ${\displaystyle p(-1)=1}$, factors ${\displaystyle f(x)}$.

Dividing ${\displaystyle f}$ by ${\displaystyle p}$ gives the other factor ${\displaystyle q(x)=x^{3}-x+2}$, so that ${\displaystyle f=pq}$. Now one can test recursively to find factors of ${\displaystyle p}$ and ${\displaystyle q}$. It turns out they both are irreducible over the integers, so that the irreducible factorization of ${\displaystyle f}$ is [3]

${\displaystyle f(x)=p(x)q(x)=(x^{2}+x+1)(x^{3}-x+2).}$

## Modern methods

### Factoring univariate polynomials over the integers

If ${\displaystyle f(x)}$ is a univariate polynomial over the integers, assumed to be content-free and square-free, one starts by computing a bound ${\displaystyle B}$ such that any factor ${\displaystyle g(x)}$ has coefficients of absolute value bounded by ${\displaystyle B}$. This way, if ${\displaystyle m}$ is an integer larger than ${\displaystyle 2B}$, and if ${\displaystyle g(x)}$ is known modulo ${\displaystyle m}$, then ${\displaystyle g(x)}$ can be reconstructed from its image mod ${\displaystyle m}$.

The Zassenhaus algorithm proceeds as follows. First, choose a prime number ${\displaystyle p}$ such that the image of ${\displaystyle f(x)}$ mod ${\displaystyle p}$ remains square-free, and of the same degree as ${\displaystyle f(x)}$. Then factor ${\displaystyle f(x)}$ mod ${\displaystyle p}$. This produces integer polynomials ${\displaystyle f_{1}(x),...,f_{r}(x)}$ whose product matches ${\displaystyle f(x)}$ mod ${\displaystyle p}$. Next, apply Hensel lifting; this updates the ${\displaystyle f_{i}(x)}$ in such a way that their product matches ${\displaystyle f(x)}$ mod ${\displaystyle p^{a}}$, where ${\displaystyle a}$ is chosen in such a way that ${\displaystyle p^{a}}$ is larger than ${\displaystyle 2B}$. Modulo ${\displaystyle p^{a}}$, the polynomial ${\displaystyle f(x)}$ has (up to units) ${\displaystyle 2^{r}}$ factors: for each subset of ${\displaystyle {f_{1}(x),...,f_{r}(x)}}$, the product is a factor of ${\displaystyle f(x)}$ mod ${\displaystyle p^{a}}$. However, a factor modulo ${\displaystyle p^{a}}$ need not correspond to a so-called "true factor": a factor of ${\displaystyle f(x)}$ in ${\displaystyle Z[x]}$. For each factor mod ${\displaystyle p^{a}}$, we can test if it corresponds to a "true" factor, and if so, find that "true" factor, provided that ${\displaystyle p^{a}}$ exceeds ${\displaystyle 2B}$. This way, all irreducible "true" factors can be found by checking at most ${\displaystyle 2^{r}}$ cases. This is reduced to ${\displaystyle 2^{r-1}}$ cases by skipping complements. If ${\displaystyle f(x)}$ is reducible, the number of cases is reduced further by removing those ${\displaystyle f_{i}(x)}$ that appear in an already found "true" factor. Zassenhaus algorithm processes each case (each subset) quickly, however, in the worst case, it considers an exponential number of cases.

The first polynomial time algorithm for factoring rational polynomials was discovered by Lenstra, Lenstra and Lovász and is an application of Lenstra-Lenstra-Lovász lattice basis reduction algorithm, the "LLL algorithm".(Lenstra, Lenstra & Lovász 1982) A simplified version of the LLL factorization algorithm is as follows: calculate a complex (or p-adic) root ? of the polynomial ${\displaystyle f(x)}$ to high precision, then use the Lenstra-Lenstra-Lovász lattice basis reduction algorithm to find an approximate linear relation between 1, ?, ?2, ?3, ... with integer coefficients, which might be an exact linear relation and a polynomial factor of ${\displaystyle f(x)}$. One can determine a bound for the precision that guarantees that this method produces either a factor, or an irreducibility proof. Although this method is polynomial time, it is not used in practice because the lattice has high dimension and huge entries, which makes the computation slow.

The exponential complexity in the algorithm of Zassenhaus comes from a combinatorial problem: how to select the right subsets of ${\displaystyle f_{1}(x),...,f_{r}(x)}$. State of the art factoring implementations work in a manner similar to Zassenhaus, except that the combinatorial problem is translated to a lattice problem that is then solved by LLL.[4] In this approach, LLL is not used to compute coefficients of factors, instead, it is used to compute vectors with ${\displaystyle r}$ entries in {0,1} that encode the subsets of ${\displaystyle f_{1}(x),...,f_{r}(x)}$ that correspond to the irreducible "true" factors.

### Factoring over algebraic extensions (Trager's method)

We can factor a polynomial ${\displaystyle p(x)\in K[x]}$, where the field ${\displaystyle K}$ is a finite extension of ${\displaystyle \mathbb {Q} }$. First, using square-free factorization, we may suppose that the polynomial is square-free. Next we write ${\displaystyle L=K[x]/p(x)}$ explicitly as an algebra over ${\displaystyle \mathbb {Q} }$. We next pick a random element ${\displaystyle \alpha \in L}$. By the primitive element theorem, ${\displaystyle \alpha }$ generates ${\displaystyle L}$ over ${\displaystyle \mathbb {Q} }$ with high probability. If this is the case, we can compute the minimal polynomial, ${\displaystyle q(y)\in \mathbb {Q} [y]}$ of ${\displaystyle \alpha }$ over ${\displaystyle \mathbb {Q} }$. Factoring

${\displaystyle q(y)=\prod _{i=1}^{n}q_{i}(y)}$

over ${\displaystyle \mathbb {Q} [y]}$, we determine that

${\displaystyle L=\mathbb {Q} [\alpha ]=\mathbb {Q} [y]/q(y)=\prod _{i=1}^{n}\mathbb {Q} [y]/q_{i}(y)}$

(notice that ${\displaystyle L}$ is a reduced ring since ${\displaystyle p(x)}$ is square-free), where ${\displaystyle \alpha }$ corresponds to the element ${\displaystyle (y,y,\ldots ,y)}$. Note that this is the unique decomposition of ${\displaystyle L}$ as a product of fields. Hence this decomposition is the same as

${\displaystyle \prod _{i=1}^{m}K[x]/p_{i}(x)}$

where

${\displaystyle p(x)=\prod _{i=1}^{m}p_{i}(x)}$

is the factorization of ${\displaystyle p(x)}$ over ${\displaystyle K[x]}$. By writing ${\displaystyle x\in L}$ and generators of ${\displaystyle K}$ as a polynomials in ${\displaystyle \alpha }$, we can determine the embeddings of ${\displaystyle x}$ and ${\displaystyle K}$ into the components ${\displaystyle \mathbb {Q} [y]/q_{i}(y)=K[x]/p_{i}(x)}$. By finding the minimal polynomial of ${\displaystyle x}$ in this ring, we have computed ${\displaystyle p_{i}(x)}$, and thus factored ${\displaystyle p(x)}$ over ${\displaystyle K.}$

## Bibliography

1. ^ FT Schubert: De Inventione Divisorum Nova Acta Academiae Scientiarum Petropolitanae v.11, p. 172-182(1793)
2. ^ An example of degree 2401, taking 7.35 seconds, is found in Section 4 in: Hart, van Hoeij, Novocin: Practical Polynomial Factoring in Polynomial Time ISSAC'2011 Proceedings, p. 163-170 (2011).
3. ^ Van der Waerden, Sections 5.4 and 5.6
4. ^ M. van Hoeij: Factoring polynomials and the knapsack problem. Journal of Number Theory, 95, 167-189, (2002).
• Fröhlich, A.; Shepherson, J. C. (1955), "On the factorisation of polynomials in a finite number of steps", Mathematische Zeitschrift, 62 (1): 331-334, doi:10.1007/BF01180640, ISSN 0025-5874
• Trager, B.M. (1976), "Algebraic Factoring and Rational Function Integration", Proc. SYMSAC 76, Symsac '76: 219-226, doi:10.1145/800205.806338
• Bernard Beauzamy, Per Enflo, Paul Wang (October 1994). "Quantitative Estimates for Polynomials in One or Several Variables: From Analysis and Number Theory to Symbolic and Massively Parallel Computation". Mathematics Magazine. 67 (4): 243-257. doi:10.2307/2690843. JSTOR 2690843.CS1 maint: multiple names: authors list (link) CS1 maint: ref=harv (link) (accessible to readers with undergraduate mathematics)
• Cohen, Henri (1993). A course in computational algebraic number theory. Graduate Texts in Mathematics. 138. Berlin, New York: Springer-Verlag. ISBN 978-3-540-55640-4. MR 1228206.CS1 maint: ref=harv (link)
• Kaltofen, Erich (1982), "Factorization of polynomials", in B. Buchberger; R. Loos; G. Collins (eds.), Computer Algebra, Springer Verlag, pp. 95-113, CiteSeerX 10.1.1.39.7916
• Knuth, Donald E (1997). "4.6.2 Factorization of Polynomials". Seminumerical Algorithms. The Art of Computer Programming. 2 (Third ed.). Reading, Massachusetts: Addison-Wesley. pp. 439-461, 678-691. ISBN 978-0-201-89684-8.
• Lenstra, A. K.; Lenstra, H. W.; Lovász, László (1982). "Factoring polynomials with rational coefficients". Mathematische Annalen. 261 (4): 515-534. CiteSeerX 10.1.1.310.318. doi:10.1007/BF01457454. ISSN 0025-5831. MR 0682664.CS1 maint: ref=harv (link)
• Van der Waerden, Algebra (1970), trans. Blum and Schulenberger, Frederick Ungar.

• Kaltofen, Erich (1990), "Polynomial Factorization 1982-1986", in D. V. Chudnovsky; R. D. Jenks (eds.), Computers in Mathematics, Lecture Notes in Pure and Applied Mathematics, 125, Marcel Dekker, Inc., CiteSeerX 10.1.1.68.7461
• Kaltofen, Erich (1992), "Polynomial Factorization 1987-1991" (PDF), Proceedings of Latin '92, Springer Lect. Notes Comput. Sci., 583, Springer, retrieved 2012
• Ivanyos, Gabor; Marek, Karpinski; Saxena, Nitin (2009), "Schemes for Deterministic Polynomial Factoring", Proc. ISSAC 2009: 191-198, arXiv:0804.1974, doi:10.1145/1576702.1576730, ISBN 9781605586090