solutions to problems in project euler