Author: Arjen K. Lenstra