1〜100の最小公倍数の質問をRubyで解いてみた。

 はてなの過去問の1〜100の最小公倍数の質問Rubyで解いてみました。(^_^;
 初め、Pythonのlcmを探していましたが、なかなかいいのが見つからなくて、Rubyではすぐに凄いのが見つかりました。やっぱり、Rubyもいいね。o(^-^)o

● lcm.rb

class Array
  def lcm
    self.inject{|a,b| a.lcm(b)}
  end
end

p (1..100).to_a.lcm

●実行結果

69720375229712477164533808935312303556800

※参考URL
rubyで複数の値の最小公倍数と最大公約数を求める - simanmanのブログ
1から10の配列を作るメモ - 牌語備忘録 - pygo

P.S.
 ちなみに、Pythonでは、Rubyと違ってlcm()関数がないので自分で作らないといけませんが、下記の参考URLでいいのが見つかりました。これを参考にして、作ってみると、次のようになります。計算結果は同じになりますので省略します。(^_^;

● lcm.py

from functools import reduce    # Python3
from fractions import gcd

def lcm(numbers):
    return reduce(lambda x, y: (x*y)//gcd(x,y), numbers, 1)

print(lcm(range(1,100+1)))

※参考URL
RiK0 Tech Temple: Nice functional LCM in Python

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

Ruby逆引きハンドブック

Ruby逆引きハンドブック