2012年 6月

素数を求める vol.2

Java

昨日、素数を求めるプログラムを作ったが 3 億までの素数を求めるのに約 4 時間半かかった。

これが速いのか遅いのかは置いといて、もう少し処理時間の短縮をはかりたい。

最近の PC はマルチコアプロセッサを搭載しているので並列処理させれば処理時間短縮が可能かもしれない。

幸いにも私の PC は 8 コアなので早速試してみました。

ちなみに下記プログラムは、java.util.concurrent パッケージについて調べていた時にあるサイトにあった

サンプルプログラムを参考にさせていただきました。

jp\yucchi\primenumber\PrimeNumber.java

このプログラムの実行結果は次のようになった。

 

2 is Prime Number. —> 1
3 is Prime Number. —> 2
5 is Prime Number. —> 3
7 is Prime Number. —> 4
11 is Prime Number. —> 5
13 is Prime Number. —> 6
17 is Prime Number. —> 7
19 is Prime Number. —> 8
23 is Prime Number. —> 9
29 is Prime Number. —> 10

    略

299999801 is Prime Number. —> 16252317
299999807 is Prime Number. —> 16252318
299999813 is Prime Number. —> 16252319
299999827 is Prime Number. —> 16252320
299999897 is Prime Number. —> 16252321
299999923 is Prime Number. —> 16252322
299999939 is Prime Number. —> 16252323
299999957 is Prime Number. —> 16252324
299999977 is Prime Number. —> 16252325
16252325個の素数を検出しました。
1時間26分23秒42106727300051716

 

なんと 3 時間も処理時間が短縮できました。(^_^)v

それでも 1 時間半近くかかります。

こんなものなのかなぁ・・・?

素数を求めるアルゴリズムにエラトステネスの篩ってのがあります。

それも試してみましょう。

それでは

おっとそろそろ時間が・・・

続きは Web で!

つづきはまた今度ね♪

Hatena タグ:

 

 


素数を求める

Java

素数を求めるプログラムを考えてみた。

まず素数とはどのように定義されているか確認した。

1 と自分自身以外に正の約数を持たない、1 でない自然数のことである。

ということは、1 より大きくて自分自身でないと割り切れない自然数であるってことかな。

完全に総当たり方式でいけば楽勝ですね。

でも、2 より大きな偶数は 2 で割り切れるから除外すればいいし、

ターゲット n が合成数(素数でない数)の場合、n=ab となる自然数 a , b が存在する。

a と b を掛けると、n になるのだから、a , b のうちどちらかは n の平方根以下であり、どちらかは n の平方根以上だ。

従って、素数でないかどうかを確認するには、nの平方根以下の自然数で割り切れるかどうか調べればいいはず。

これらの特徴をふまえた上で、 3 億までの素数を求めるプログラムをくんでみた。

jp\yucchi\primenumber_loop\PrimeNumber_Loop.java

このプログラムを実行結果は次のようになった。


2 is Prime Number. —> 1
3 is Prime Number. —> 2
5 is Prime Number. —> 3
7 is Prime Number. —> 4
11 is Prime Number. —> 5
13 is Prime Number. —> 6
17 is Prime Number. —> 7
19 is Prime Number. —> 8
23 is Prime Number. —> 9
29 is Prime Number. —> 10

299999771 is Prime Number. —> 16252316
299999801 is Prime Number. —> 16252317
299999807 is Prime Number. —> 16252318
299999813 is Prime Number. —> 16252319
299999827 is Prime Number. —> 16252320
299999897 is Prime Number. —> 16252321
299999923 is Prime Number. —> 16252322
299999939 is Prime Number. —> 16252323
299999957 is Prime Number. —> 16252324
299999977 is Prime Number. —> 16252325
16252325個の素数を検出しました。
4時間29分24秒10574628300128097

 

凄く時間がかかった(×_×)

ちなみに Dual Xeon 3GHz で総コア数 8 です。

ハイパースレッドは無い古い CPU です。

ちょっとでも時間短縮する為に次回は並列処理をさせてみたいと思います。

実は並列処理の方法は java.util.concurrent パッケージについて調べていた時にあるサイトに

サンプルプログラムとしてありました。

それをちょっとだけ変更して使用させていただきます。

と言いつつ睡魔に襲われてきたのでまた今度ってことにします。

それでは、つづきは Web で!

おやすみ~~~~( ^.^)( -.-)( _ _)

Hatena タグ:


トヨタ博物館に行ってきた

Motor

今日は愛知県にあるトヨタ博物館までドライブに行ってきた。

とても綺麗な建物でさらに優しくて綺麗なお姉さんがいてとても幸せな時間を過ごしました。

おっと、間違った!

家族と一緒に歴史に名を刻んだ名車を見て、レストランで美味しい食事をして有意義な一日となった。

館内は写真撮影可能だということで何枚か撮ってきました。

ちょっとだけですが画像を載せておきます。

言わずと知れた名車 ボンドカーに採用された TOYOTA 2000GT

TOYOTA 2000GT

次は可愛らしい車で2気筒の水平対向エンジンを積んだ TOYOTA 800

水平対向エンジンで FR パッケージとしては TOYOTA 86 と兄弟と言ってもいいだろう。

TOYOTA 800

次は HONDA の可愛らしい車です。S500

HONDA S500

さて、次は外車です。Benz 300SL クーペ

Benz 300SL クーペ

博物館には古き時代のアメリカギャング映画に出てくるような車も多数展示されてました。

私はその時代の車はまったく解らないので昔はこんなのが走っていたのか程度にしか感動がありませんでした。(^_^;)

懐かしい車や子供の頃にプラモデルで組み立てた車もありました。

思わずこの車何処の販売店に行けば買えるの?って聞いてみたくなりました。

たとえ売ってくれるとしてもとんでもない金額を提示されるだろうからあきらめました。(..;)

しかし、お土産に TOYOTA 86 のミニカーをGET!

しかも欲しかったオレンジです。

現品限りとなっていたので速攻で購入しました。

それがこれです。

TOYOTA 86

TOYOTA 86 2

トミカのミニカーより大きくて細部まで丁寧に再現されてます。

アンテナも付いてますし、特徴あるドアミラーのカラーリングまで再現されてます。

しかもシャコタンです。

私の車高調で保安基準いっぱいまで下げた 86 より低いです(>_<)

今日はこれを枕元に置いて寝よう(爆睡

Hatena タグ:

 

 


TYOTA 86 のミニカー

Motor

TOTOTA 86 のトミカ製のミニカーを手に入れたので画像をアップします。

初回特別カラーのシルバーと赤の2台です。

tomika_1

tomika_2

作りはだいたい他のものと変わりはなさそうです。

ミニカー買ったのは久しぶりです。

何故か子供の頃と同じようにうれしく感じます。(*^_^*)

ついでに本物の TOYOTA 86 を買った時におまけにもらったプラスチックモデルも

toyota-86_3

toyota-86_2

toyota-86_1

ちゃんとメタリックになってますね。

グレードはトミカは GT Limited のようだけどこれは GT のようですね。

そう言えば、タミヤからプラモデルも発売されてますね。

買おうと思ったけど組み立てる時間が無いので止めました。( ̄。 ̄;)

今日はミニカーを枕元に置いて寝るか。

子供の頃はよくそうして大人になったらいっぱい車買って乗り回すのが夢だったなぁ・・・

いっぱい車を買うことはできなかったけど車で楽しい思い出を少しずつでも増やせたらいいと思う。

Hatena タグ:


TRD パーツ取り付け完了

Motor

86 の TRD パーツの取り付け完了しました。

足回りと車体パーツです。

とても良くなりました。(^^)

乗りごごちはもともと良いとは言えない設定の車なので聞かないでね。

さて、ボディについた傷については深く入っていて補修すると10数万円かかるとのことでした。(>_<)

このお金があれば機械式のデフ入れられるのになぁ・・・

どうしたものか・・・

とりあえずトミカのミニカー手にいれたので後で画像をアップする予定です。

Hatena タグ:

« 古い記事