JavaScript Implementation of Problem 27

View source code here on GitHub!

Includes

Problem Solution

p0027()

Project Euler Problem 27

Another good problem for code golf

Problem: Euler discovered the remarkable quadratic formula:

n**2+n+41

It turns out that the formula will produce 40 primes for the consecutive integer values 0≤n≤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 0≤n≤79. The product of the coefficients, −79 and 1601, is −126479.

Considering quadratics of the form:

n**2+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.

Returns:

number --

 1/**
 2 * Project Euler Problem 27
 3 *
 4 * Another good problem for code golf
 5 *
 6 * Problem: Euler discovered the remarkable quadratic formula:
 7 *
 8 * n**2+n+41
 9 *
10 * It turns out that the formula will produce 40 primes for the consecutive
11 * integer values 0≤n≤39. However, when ``n=40``, ``40**2+40+41=40(40+1)+41`` is divisible
12 * by 41, and certainly when ``n=41``, ``41**2+41+41`` is clearly divisible by 41.
13 *
14 * The incredible formula ``n**2−79n+1601`` was discovered, which produces 80 primes
15 * for the consecutive values 0≤n≤79. The product of the coefficients, −79 and
16 * 1601, is −126479.
17 *
18 * Considering quadratics of the form:
19 *
20 *     n**2+an+b
21 *
22 * , where ``|a|<1000`` and ``|b|≤1000``
23 *
24 * where ``|n|`` is the modulus/absolute value of n, e.g. ``|11|=11`` and ``|−4|=4``
25 *
26 * Find the product of the coefficients, a and b, for the quadratic expression
27 * that produces the maximum number of primes for consecutive values of n,
28 * starting with n=0.
29 *
30 * @return {number}
31 */
32exports.p0027 = function() {
33    let streak = 0;
34    let answer = 0;
35    for (let a = -999; a < 1000; a++) {
36        for (const b of primes.primesAndNegatives(1001)) {
37            let i = 0;
38            while (primes.isPrime((i + a) * i + b)) {
39                i++;
40            }
41            if (i > streak) {
42                streak = i;
43                answer = a * b;
44            }
45        }
46    }
47    return answer;
48};
49
50const primes = require('./lib/primes.js');

Tags: sequence-generator, prime-number, quadratic-equation, js-iterator