Projecteuler problem 3 solution