キミならどう書く 2.0 - ROUND 1 -
お題は「100までの整数から素数を列挙せよ」。via Yuguiさんとこ
Rails厨の回答。
#!/usr/bin/env ruby require_gem 'activesupport' require 'active_support' class Fixnum @@primes = [] def prime? return false if 1 == self if @@primes.empty? @@primes.push(self) else @@primes.all?{|n| (self % n) > 0 } ? @@primes.push(self) : false end end end p (1..100).select(&:prime?)
- 素数は1と自身以外の素数で割り切れない整数、という中学定義に素直に。文系だし。
- アルゴリズムとしてかなり遅いのが難点。10000くらいになると苦しい。
- ActiveSupportはSymbol#to_procを使いたいだけ。