Problem 27

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

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

class Fixnum
  def prime?
    (2..Math.sqrt(self.abs).ceil).each do |i|
      return false if self%i == 0
    end
    return true
  end
end

class QuadraticFormula

  attr_accessor :a, :b, :prime

  def initialize(a,b)
    @a = a
    @b = b
    @prime = nb_prime
  end

  def nb_prime
    n = 0
    while true do
      if (n**2+@a*n+@b).prime?
        n += 1
      else
        break
      end
    end
    return n
  end
end

def max_prime(limit)
  max = QuadraticFormula.new(0,0)
  (-limit..limit).each do |i|
    (-limit..limit).each do |j|
      qf = QuadraticFormula.new(i,j)
      max = qf if qf.nb_prime > max.prime
    end
  end
  return max
end

max = max_prime(999)
puts max.a * max.b
No tags for this post.

SPEAK / ADD YOUR COMMENT
Comments are moderated.

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>