In order to find integers and
such that
(1) |
(a modified form of Fermat's factorization method), in which case there is a 50% chance that is a factor of
, choose a random integer
, compute
(2) |
and try to factor . If
is not easily factorable (up to some small trial divisor
), try another
. In practice, the trial
s are usually taken to be
, with
, 2, ..., which allows the quadratic sieve factorization method to be used. Continue finding and factoring
s until
are found, where
is the prime counting function. Now for each
, write
(3) |
and form the exponent vector
(4) |
Now, if are even for any
, then
is a square number and we have found a solution to (◇). If not, look for a linear combination
such that the elements are all even, i.e.,
(5) |
(6) |
Since this must be solved only mod 2, the problem can be simplified by replacing the s with
(7) |
Gaussian elimination can then be used to solve
(8) |
for , where
is a vector equal to
(mod 2). Once
is known, then we have
(9) |
where the products are taken over all for which
. Both sides are perfect squares, so we have a 50% chance that this yields a nontrivial factor of
. If it does not, then we proceed to a different
and repeat the procedure. There is no guarantee that this method will yield a factor, but in practice it produces factors faster than any method using trial divisors. It is especially amenable to parallel processing, since each processor can work on a different value of
.