Optimized Problem 4 to start at the top and check validity.

The loop now works down from 999 to 100.
Check that the new possible palindrome is > than the old palindrome.
Optimized Problem 4 to check the loops floor.

If i or j drop below the current values that produce a palindrome then we no
longer need to continue and can safely break out of the loop and end the
program. This provides about a 600% increase in performance time.
Solved Problem 5: https://projecteuler.net/problem=5

Answer: 232792560

Because the lowest common multiple of 19 and 20 is 380, I can safely increment
by this amount to save time in the number of checks to run.
Solved Problem 6: https://projecteuler.net/problem=4

Answer: 25164150
Solved Problem 7: https://projecteuler.net/problem=7

Answer: 104743

Changed so that it only checks odd numbers for primeality.
Solved Problem 8: https://projecteuler.net/problem=8

Answer: 40824

Need to be able to parse each individual digit from a string using regular
expressions. Will return to optimize this.
Solved Problem 9: https://projecteuler.net/problem=9

Answer: 31875000
Solved Problem 10: https://projecteuler.net/problem=10

Answer: 142913828922

This is probably a great place to use the Sieve of Eratosthenes will look at
reimplementing this later.