Solution to Project Euler problem 3