Algorithmic Number Theory