# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2037 # # そのまま.. require 'prime' def lprime?(x) x.each_index.reduce(true) {|ret, i| ret && Prime.prime?(x[0 .. i].join.to_i) } end def rprime?(x) x.each_index.reduce(true) {|ret, i| ret && Prime.prime?(x[(x.size - i - 1) .. -1].join.to_i) } end puts Prime.each(1000000).reduce(0) {|sum, prime| if (prime > 10) x = prime.to_s.chars.to_a sum + (lprime?(x) && rprime?(x) ? prime : 0) else sum end }