なにやら面白そうな企画が開催されているようなので、乱入。「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まで」ですが、いちおう上限をパラメーターで指定できるようにもしておきました。と言いつつ、例外処理とか負の値が指定された場合とかは、見て見ぬ振りなので、この点への突っ込みはご容赦ください^^;
調べてたらエラトステネスの篩というのが正攻法みたいですが、既に他の人がこれを使って解を出してるので、パス(笑)
特にエレガントでもないし、トリッキーなところもなく素直に書いたつもりですが、こんな感じでどうでしょうか?