Project Euler 146 - Investigating a Prime Pattern

Official link: https://projecteuler.net/problem=146

Thought Process

The first thing I noticed was that n must be even, if it was odd then n^2+1 would be even and not prime. Which is a good start reducing the cases by half.

But the time consuming part is checking whether all the numbers are prime or not, and I came up with a pretty neat and extremely fast trick using Fermat's Little Theorem, which I later ended up discovering was called Fermat Primality Testing.

This means if we try a bunch of different values for a and this holds true then p is probably prime. I use a = 2 first to filter the cases down and because we will be testing 6 different cases it is highly unlikely we get 6 consecutive fake primes in a row.

Using this alone, the code still takes around 2.5 minutes, however it can be again sped up by investigating n mod (3,5,7) but I will leave that to you.

Another thing to note is that checking if they are prime does not mean they are consecutive!

Interactive Code

Enter a number (yourinput)

Code will output the sum of all such n less than yourinput

Note: Code is not super fast, 10^7 takes about 2.5 seconds