projecteuler.net problem 48