Techniques for factorization of integers fall into three general classes: Deterministic algorithms, Type I probabilistic algorithms whose expected running time depends on the size of the smallest prime factor, and Type II probabilistic algorithms whose expected running time depends on the size of the number to be factored.
Deterministic algorithms are slow but are guaranteed to find the factorization within a known period of time. Trial division is one example. Fermat’s algorithm is another; see Bressoud (1989, §5.1).
Type I probabilistic algorithms include the Brent–Pollard rho algorithm (also called Monte Carlo method), the Pollard algorithm, and the Elliptic Curve Method (ecm). Descriptions of these algorithms are given in Crandall and Pomerance (2005, §§5.2, 5.4, and 7.4). As of January 2009 the largest prime factors found by these methods are a 19-digit prime for Brent–Pollard rho, a 58-digit prime for Pollard , and a 67-digit prime for ecm.
Type II probabilistic algorithms for factoring rely on finding a pseudo-random pair of integers that satisfy . These algorithms include the Continued Fraction Algorithm (cfrac), the Multiple Polynomial Quadratic Sieve (mpqs), the General Number Field Sieve (gnfs), and the Special Number Field Sieve (snfs). A description of cfrac is given in Bressoud and Wagon (2000). Descriptions of mpqs, gnfs, and snfs are given in Crandall and Pomerance (2005, §§6.1 and 6.2). As of January 2009 the snfs holds the record for the largest integer that has been factored by a Type II probabilistic algorithm, a 307-digit composite integer. The snfs can be applied only to numbers that are very close to a power of a very small base. The largest composite numbers that have been factored by other Type II probabilistic algorithms are a 63-digit integer by cfrac, a 135-digit integer by mpqs, and a 182-digit integer by gnfs.
For current records see Cunningham Project.