#! /usr/bin/python3
# -*- coding: iso-8859-1 -*-

# 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, 402 + 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.

from euler import *

if __name__ == '__main__':
    limit = 1000

    maximum = (0, 0)
    primesBelowLimit = PrimesBelow(limit)
    primesBelowAboveLimit = PrimesBelow(limit ** 1.5)
    for b in primesBelowLimit:
        for number in primesBelowLimit:
            a = number - b - 1
            count = 2
            while True:
                if number not in primesBelowAboveLimit:
                    break
                number += 2 * count + a - 1
                count += 1
                maximum = max(maximum, (count, a * b))

    print(maximum[1])
