Factoring large numbers
As for the algorithm, you have two choices: The quadratic sieve and the general number field sieve.

If you want to implement the factorization yourself you want to use the quadratic sieve, as a good implementation of the GNFS is really hard.

However, if you're willing to use pre-made tools using GGNFS and msieve (together) is your best option. Msieve provides good polynomial selection (first step) and GGNFS provides the efficient second step, while msieve takes over the last step, you may want to refer to this guide for the exact how-to.