Project Euler Problem 027

Statement

Euler published the remarkable quadratic formula:

n² + 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² + 41 + 41 is clearly divisible by 41.

Using computers, the incredible formula n² − 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² + an + b, where |a| < 1000 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.

Solution

The solution is quite straightforward and to improve the performance we just take into account the prime numbers from 0 to 999 to use as b

from CommonFunctions import find_primes_less_than, is_prime
 
if __name__ == '__main__':
    max = 0
    primes = find_primes_less_than(1000)
    for b in primes:
        for a in range(-999, 1000):
            n = 0
            tmp = n ** 2 + a * n + b
            while tmp > 0 and is_prime(tmp):
                n += 1
                tmp = n ** 2 + a * n + b
            if n > max:
                max = n
                res = (a, b)
    print("The result is:", res[0] * res[1])

The Python file is available for download here.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License