# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2046 # # 3以上の奇数合成数(素数でない奇数) n について a * a * 2 が n 超えない整数 a の範囲は # 1 .. Math.sqrt(n / 2).to_i # である. # この範囲について n - (a * a * 2) が素数であることが一度もない n を探す. # require 'prime' n = 3 loop do if (!Prime.prime?(n) && !(1 .. Math.sqrt(n / 2).to_i).reduce(false) {|ret, a| ret || Prime.prime?(n - (a * a) * 2) }) puts n break end n += 2 end