• ベストアンサー

素数を求める方法。

2から1000までの、素数を求めるスクリプトを作るとしたら、あなたはどういうモノを作りますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#エラトステネスの篩 by Perl $max = 1000;#1000までの素数 $prime[$count++]=2; print "2\n"; N_LOOP: for($n=3;$n<=$max;$n+=2){ for($i=0;$prime[$i]*$prime[$i] <= $n;$i++){ next N_LOOP if($n % $prime[$i] == 0); } $prime[$count++]=$n; print "$n\n"; }

noname#15164
質問者

お礼

私も、求まりました♪ こんなにすっきりするんですねー。 2,3日試行錯誤して、どうにかなったのですが、これほど短くはなりませんでした。(w; これからも、自分の勉強もかねて、アルゴリズムっぽい質問をしたいと思います。感謝感謝♪ 自前のスクリプトはなんか恥ずかしいので、アップしません。(笑 でも、いつかきちんとしたものを、アップしようかと。

その他の回答 (2)

  • akekou
  • ベストアンサー率19% (12/63)
回答No.2

エラトステネスの篩。 配列のデータ長が長くなるというなら、boolean型にするか、各配列の要素のbitを数字に当てはめて使うか、どちらかですね。 エラトステネスの篩を使ったことが無いようなので、int型で0,1を用いboolean型のように扱ってみるのが適切かと。

  • akirameta
  • ベストアンサー率37% (19/51)
回答No.1

エラトステネスの篩い。

noname#15164
質問者

補足

エラトステネスのふるい をそのままスクリプトにするとかえって難しくなりませんか? 一度、巨大な配列を作らないとダメだし、その後のふるい落とす処理も、私には面倒に感じます。 でも、逆にエラトステネスのふるいの方法でスクリプトを書いて頂けると、勉強になります。 Perlでも、PHPでもOKです。(w

関連するQ&A

専門家に質問してみよう