Project Euler: Problem 3 - Solution