From: toyofuku@... Date: 1997-09-08T19:52:51+09:00 Subject: [ruby-list:4206] prime generator sample program 豊福@パパイヤです。一から ruby 勉強中です。 オブジェクトを使ったちょっと面白いプログラムを 思い出したので練習問題がてらに ruby で書いてみま した。チェーン状につながったフィルタオブジェクト を通すと合成数はふるい落とされていくというプログ ラムです。 「こう書いた方が ruby らしい」など教えて下さい。 class Counter def initialize(v) @value = v end def out @value += 1 return @value - 1 end end class Filter def initialize(src, f) @source = src @factor = f end def out loop do n = @source.out() if n % @factor != 0 return n end end end end class Sieve def initialize(src) @source = src end def out n = @source.out() src = Filter.new(@source, n) @source = src return n end end if ! max = ARGV.shift; max = 100; end max = max.to_i c = Counter.new(2) s = Sieve.new(c) loop do n = s.out() if n > max break end print n, "\n" end --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp