Higher arithmetic an algorithmic introduction to number theory - Edwards, Harold M. (American Mathematical Society, 2008)