素数判定
ruby-talk:244371
正規表現を使って、こんなに簡単に素数判定ができるとは知らなかった。
ruby -wle 'puts "Prime" unless ("1" * ARGV[0].to_i) =~ /^1$|^(11+?)\1+$/' 37
大きい数に対しては、繰り返し回数の上限を指定したほうが速そうだ。
/\A(?:x|(xx{1,#{Math.sqrt(n).floor}}?)\1+)\z/.match('x' * n)
ruby-talk:244371
正規表現を使って、こんなに簡単に素数判定ができるとは知らなかった。
ruby -wle 'puts "Prime" unless ("1" * ARGV[0].to_i) =~ /^1$|^(11+?)\1+$/' 37
大きい数に対しては、繰り返し回数の上限を指定したほうが速そうだ。
/\A(?:x|(xx{1,#{Math.sqrt(n).floor}}?)\1+)\z/.match('x' * n)