最終更新: 2019-01-14T23:35+0900
解けなくて飛ばした問題の中で一番最初の問題に再チャレンジ。a の定義、b の定義、b が限界を定める、というところから、あとは計算。15 秒くらいかかってもいいでしょう。
#!rubyw
# coding: utf-8
require 'prime'
a = *-1000..0
b = Prime.each(1000).reject {|_| _ < 80 }
remains = a.product b
(0..1000).each {|n|
remains.reject! {|a, b|
n == b or
n + a == -b or
(n * (n + a) + b) <= 0 or
not (n * (n + a) + b).prime?
}
puts "remains #{remains.size}"
puts "a = %d; b = %d; n = %d" % [*remains[0], n] if remains.size == 1
break if remains.size <= 1
}