2006年06月17日

100までの素数@ruby

なにやら面白そうな企画が開催されているようなので、乱入。「100までの素数を列挙するコードを書くべし」だそうです。とりあえずRubyを使って書いてみました。

def generate_prime_numbers(max)
  (2..max).inject([]) do |list, n|
    append_if_prime(list, n)
  end
end

def append_if_prime(known_primes, n)
  known_primes.each {|prime| return known_primes if n % prime == 0 } 
  known_primes << n
end

puts generate_prime_numbers(100)

お題は「100まで」ですが、いちおう上限をパラメーターで指定できるようにもしておきました。と言いつつ、例外処理とか負の値が指定された場合とかは、見て見ぬ振りなので、この点への突っ込みはご容赦ください^^;

調べてたらエラトステネスの篩というのが正攻法みたいですが、既に他の人がこれを使って解を出してるので、パス(笑)

特にエレガントでもないし、トリッキーなところもなく素直に書いたつもりですが、こんな感じでどうでしょうか?

posted by cesare at 00:52 | 技術関連
この記事へのTrackBack URL

×

この広告は90日以上新しい記事の投稿がないブログに表示されております。