Integer factorization algorithm
Lattice sieving is a technique for finding smooth values of a bivariate polynomial over a large region. It is almost exclusively used in conjunction with the number field sieve. The original idea of the lattice sieve came from John Pollard.[1]
The algorithm implicitly involves the ideal structure of the number field of the polynomial; it takes advantage of the theoremWhich one? that any prime ideal above some rational prime p can be written as . One then picks many prime numbers q of an appropriate size, usually just above the factor base limit, and proceeds by
- For each q, list the prime ideals above q by factorising the polynomial f(a,b) over
- For each of these prime ideals, which are called 'special 's, construct a reduced basis for the lattice L generated by ; set a two-dimensional array called the sieve region to zero.
- For each prime ideal in the factor base, construct a reduced basis for the sublattice of L generated by
- For each element of that sublattice lying within a sufficiently large sieve region, add to that entry.
- Read out all the entries in the sieve region with a large enough value
For the number field sieve application, it is necessary for two polynomials both to have smooth values; this is handled by running the inner loop over both polynomials, whilst the special-q can be taken from either side.
- ^ Arjen K. Lenstra and H. W. Lenstra, Jr. (eds.). "The development of the number field sieve". Lecture Notes in Math. (1993) 1554. Springer-Verlag.