質問の小学校5年生算数の問題をRubyで解いてみた。

 質問の小学校5年生算数の問題Rubyで解いてみました。(^_^;
 数学的に解くと、最大公約数が4なので、3つの数字は4の倍数になります。30以下なので、その候補は、
 4,8,12,16,20,24,28
ですが、最小公倍数が120=2^3 * 3 * 5なので、約数にならない16(=2^4)と28(=2^4 * 7)は除外できます。よって、候補は次のように絞られます。
 4,8,12,20,24
 最小公倍数120=2^3 * 3 * 5の5の供給源となる20は、3つの数の中に必ず含まれなければならず、3の供給源として、12または24(どちらか一方、あるいは、両方)を含んでいないといけません。
 後は、以上を踏まえて、場合分けして、検証作業でしょうか。(^_^;

●GcdAndLcm.rb

# GcdAndLcm.rb
for x in 1..30 do
  for y in x..30 do
    for z in y.. 30 do
      if x.gcd(y).gcd(z)==4 && x.lcm(y).lcm(z)==120 then
        print "%d,%d,%d\n" %[x,y,z]
      end
    end
  end
end

●実行結果

4,20,24
8,12,20
8,20,24
12,20,24
20,20,24
20,24,24

Rubyの絵本

Rubyの絵本

Ruby逆引きハンドブック

Ruby逆引きハンドブック