# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2047 # # 問題そのままに n .. (n + 3) の素因数が4つあるか判定する. # # 連続する4つなので,条件が成立し得ない範囲はスキップするようにする. # たとえば,n + 3 の素因数が4つでない場合,n + 4 以降を開始点としないければ # 条件は成立しえないので # n += 4 # とスキップできる. require 'prime' n = 1 loop do if ((n + 3).prime_division.size != 4) n += 4 elsif ((n + 2).prime_division.size != 4) n += 3 elsif ((n + 1).prime_division.size != 4) n += 2 elsif ((n).prime_division.size != 4) n += 1 else puts n break end end