ProjectEuler Problem 3