最終更新: 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 }