working through http://projecteuler.net/