Euler discovered the remarkable quadratic formula:

$$n^2 + n + 41$$

It turns out that the formula will produce 40 primes for the consecutive values n = 0 to 39. However, when $$n = 40, 40^2 + 40 + 41 = 40(40 + 1) + 41$$ is divisible by 41, and certainly when $$n = 41, 41^2 + 41 + 41$$ is clearly divisible by 41.

The incredible formula $$n^2 − 79n + 1601$$ was discovered, which produces 80 primes for the consecutive values n = 0 to 79. The product of the coefficients, −79 and 1601, is −126479.

Considering quadratics of the form:

$$n^2 + an + b, \mbox{ where } |a| < 1000 \mbox{ and } |b| < 1000$$

where |n| is the modulus/absolute value of n (e.g. |11| = 11 and |−4| = 4).

Find the product of the coefficients, a and b, for the quadratic expression that produces the maximum number of primes for consecutive values of n, starting with n = 0.

first we create the function:


In [5]:
from pyprimes import isprime
def f(n, a, b):
    return n**2 + a * n + b

then get the prime numbers


In [20]:
a_l = 1000
b_l = 1000
c_p = dict()
for a in range(- a_l + 1, a_l - 1):
    for b in range(-b_l + 1,b_l - 1):
        n = 0 
        while isprime(f(n, a, b)):
            n += 1
        if n > 1
            c_p[a, b] = n

get the max value


In [33]:
m_n = max(c_p.values())

filter for max value


In [34]:
r = [k for k,v in c_p.items() if v == m_n]

find the product


In [36]:
from numpy import prod
print( prod(r), r, m_n)


-59231 [(-61, 971)] 71