solutions to problems from project euler