2月に面接でホワイトボードを前に頭真っ白になったのをふと思い出したので、素数を返すプログラムを書いてみました。
どうせなら配列で返すか、ということで再帰的に素数を配列に足していくメソッドにしました。prime?
メソッドはPrimeクラスを使わず自前です。
※コメント頂いたおかげでずいぶんスリムになりました。Before/Afterは編集履歴で確認できます。
primes_array.rb
def prime?(n,primes)
primes.all? { |m| n % m != 0 }
end
def primes_array(n,i=2,arr=[])
return arr if arr.size >= n
arr << i if prime?(i)
i += 1
primes_array(n,i,arr)
end
p primes_array(ARGV[0].to_i)