Algorithmic number theory