読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 10 / 200万以下の素数の和

200万以下のすべての素数の和を求めよ。

Problem 10 - Project Euler

VBA の COUNTIF 関数的なものを作ってみました。PrimeQ[x] は x が素数なら True,素数でないなら False を返します。これを使って,素数は1倍,素数以外は0倍して足します。最初に作ったのがこれ。

IF 文に若干のまどろっこしさを感じていたところ,Boole が True なら1,False なら0を返すことがわかったので書き直しました。

Select で素数のリストを作って総和を求めてもいいですね。体感ですが,こちらの方が速いような気がします。

追記(2017/04/20)

元記事に「体感ですが~」とあるのは,このころは計算時間の測り方を知らなかったからですね。測ってみました。約0.8秒。

また,PrimePi[2*10^6] で一気に素数の範囲を指定してみたら0.15秒になりました。