素数判定のワンライナー

こんな感じかな

ruby -rmathn -e "ARGV.each{|n| n,b=n.to_i,-2; Prime.new.each{|p| (puts '%d is prime'%n; break) if p==n.abs; (puts '%d is not prime and %d, %d are primes.'%[n,b,p]; break) if p>n.abs; b=p}}"

引数を順次判定する。ちょっとメッセージが冗長かな、毎回 Prime.new.each するのも戴けない。

Prime.new.each一回にした

ruby -rmathn -e "ns,b=ARGV.map{|n| n.to_i.abs}.sort.uniq,-2; Prime.new.each{|p| puts '%d is prime'%ns.shift if p==ns.first; (puts '%d is not prime and %d, %d are primes.'%[ns.shift,b,p]; redo) if ns.first and p>ns.first; break if ns.empty?; b=p}"

ns.first and ってあたりがちょっと。