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.
Posts