Project Euler - Problem 1
http://odz.sakura.ne.jp/projecteuler/ の和訳にお世話になっています。
10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。 同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。
def common_multiples(limit, *nums) return enum_for(__method__, limit, *nums) unless block_given? (1...limit).each{|x| yield(x) if nums.any?{|n| x % n == 0 } } end p common_multiples(1000, 3, 5).inject(0, :+) #=> 233168