Congruence of squares

From Wikipedia, the free encyclopedia

In number theory, a congruence of squares is a congruence commonly used in integer factorization algorithms.

Derivation[edit]

Given a positive integer n, Fermat's factorization method relies on finding numbers x and y satisfying the equality

We can then factor n = x2 − y2 = (x + y)(x − y). This algorithm is slow in practice because we need to search many such numbers, and only a few satisfy the equation. However, n may also be factored if we can satisfy the weaker congruence of squares conditions:

From here we easily deduce

This means that n divides the product (x + y)(x − y). The second non-triviality condition guarantees that n does not divide (x + y) nor (x − y) individually. Thus (x + y) and (x − y) each contain some, but not all, factors of n, and the greatest common divisors of (x + y, n) and of (x − y, n) will give us these factors. This can be done quickly using the Euclidean algorithm.

Most algorithms for finding congruences of squares do not actually guarantee non-triviality; they only make it likely. There is a chance that a congruence found will be trivial, in which case we need to continue searching for another x and y.

Congruences of squares are extremely useful in integer factorization algorithms. Conversely, because finding square roots modulo a composite number turns out to be probabilistic polynomial-time equivalent to factoring that number, any integer factorization algorithm can be used efficiently to identify a congruence of squares.

Using a factor base[edit]

A technique pioneered by Dixon's factorization method and improved by continued fraction factorization, the quadratic sieve, and the general number field sieve, is to construct a congruence of squares using a factor base.

Instead of looking for one pair directly, we find many "relations" where the y have only small prime factors (they are smooth numbers), and multiply some of them together to get a square on the right-hand side.

The set of small primes which all the y factor into is called the factor base. Construct a Boolean matrix where each row describes one y, each column corresponds to one prime in the factor base, and the entry is the parity (even or odd) of the number of times that factor occurs in y. Our goal is to choose rows to add together to make an all-zero row. This corresponds to a set of y values to multiply together to produce a product whose factors all appear an even number of times, i.e. a square number. Multiplying together the corresponding x values will produce a congruence of squares.

This is a classic system of linear equations problem, and can be efficiently solved using Gaussian elimination as soon as the number of rows exceeds the number of columns. Each additional row provides an additional solution, in case the first solution produces a trivial congruence.

A great advantage of this technique is that the search for relations is embarrassingly parallel; a large number of computers can be set to work searching different ranges of x values and trying to factor the resultant ys. Only the found relations need to be reported to a central computer, and there is no particular hurry to do so. The searching computers do not even have to be trusted; a reported relation can be verified with minimal effort.

There are numerous elaborations on this technique. For example, in addition to relations where y factors completely in the factor base, the "large prime" variant also collects "partial relations" where y factors completely except for one larger factor. A second partial relation with the same larger factor can be multiplied by the first to produce a "complete relation".

Examples[edit]

Factorize 35[edit]

We take n = 35 and find that

.

We thus factor as

Factorize 1649[edit]

Using n = 1649, as an example of finding a congruence of squares built up from the products of non-squares (see Dixon's factorization method), first we obtain several congruences

Of these, the first and third have only small primes as factors, and a product of these has an even power of each small prime, and is therefore a square

yielding the congruence of squares

So using the values of 80 and 114 as our x and y gives factors

See also[edit]

References[edit]

  • Bressoud, David M. (1989). "8. The Quadratic Sieve". Factorization and Primality Testing (PDF). Undergraduate Texts in Mathematics. Springer-Verlag. ISBN 0-387-97040-1.
  • Reisel, Hans (1994). Prime Numbers and Computer Methods for Factorization. Progress in Mathematics. Vol. 126 (2nd ed.). Birkhaüser. ISBN 0-8176-3743-5.
  • Wagstaff, Samuel S. Jr. (2013). The Joy of Factoring. Student mathematical library. Vol. 68. Providence, RI: American Mathematical Society. pp. 195–202. ISBN 1-4704-1048-6.