어떤 2차식이 있을 때, 이 이차식에 정수값을 대입했을 때 그 결과가 소수가 된다면, 소수의 개수가 가장 많은 2차식을 구하는 문제이다. 2차식의 그래프는 포물선이며, 포물선은 좌우 대칭이다. 포물선의 식을 (n - v)^2 + w 의 모양으로 정리했을 때, n = v 를 중심으로 소수가 분포하도록 하고 n = 0 ~ v 까지 최대한 소수가 되는 것이 유리하다. 따라서 n^2 an + b 에서 a는 음수 b는 -2a보다 큰 양수가 되는 제약 조건을 걸면 오래 걸리지 않는다.
a, b가 주어질 때,0부터 몇 개의 소수가 나오는지를 체크한다.
using Primes
function test(a, b)
f(x) = x^2 + a*x + b
c, i = 0, 0
while true
isprime(f(i)) || break
c, i = c + 1, i + 1
end
return i - 1
end
function main()
[(test(a, b), a * b) for a=-1000:-1 for b=-2x:1000] |> maximum |> last |> println
end