プロが教えるわが家の防犯対策術!

先日excel2002vbaを使って素数を見つけるプログラムを作りました。ワークシートに素数番号1~100万まで書きだすのに20分もかかりました。早いやり方誰か教えていただけませんか?
pc::東芝ダイナブック2002 os::winxp

A 回答 (2件)

シートのセルに書き出し(結果を画面表示)を実行中は抑止するぐらいしかないのでは。


「エラトステネスのふるい,」以外のアルゴリズムは無いのではないか。
「エラトステネスのふるい,」の改良されたアルゴリズムしかない。
http://www.kogures.com/hitoshi/webtext/al-prime/ …
のエラトステネスのふるい
のコードをVBAに「焼き直し」するとか、
http://www.samurai-logic.com/mt/2008/06/-vb-code …
参考にする。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。まだ初心者ですので少しずつ学びたいと思います。

お礼日時:2011/12/16 13:47

100万くらいまでだったら「エラトステネスのふるい」が早いでしょう。



Sub 素数()
Dim i As Long
Dim j As Long
Dim n As Long
Dim P(1000000) As Byte

For i = 2 To 1000
  If P(i) = 0 Then
    For j = 2 To 1000000 \ i
      P(j * i) = 1
    Next
  End If
Next

n = 0
For i = 2 To 1000000
  If P(i) = 0 Then
    n = n + 1
    Cells(n, 1) = i
  End If
Next
End Sub
    • good
    • 0
この回答へのお礼

丁寧なご回答有難うございます。僕の書いたコードよりもずいぶんと短くすっきりしていてびっくりです。

お礼日時:2011/12/16 13:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!