- 締切済み
素数を求めるマクロを
走らすと暴走したようになり、素数=151で止まります。 どこが悪いのでしょうか。正常に終わるようにしたいです。 ====================== Sub 素数を求める() Dim i As Long Dim j As Long Dim m As Long Dim p As Long Dim flg As Boolean i = 1 j = 1 p = 2 Do flg = False For m = 2 To Int(Sqr(p)) If p Mod m = 0 Then flg = True Exit For End If Next If flg = False Then Cells(i, j) = p i = i + 1 If i > Rows.Count Then i = 1 j = j + 1 End If End If p = p + 1 Loop End Sub ======================
- みんなの回答 (4)
- 専門家の回答
お礼
上のマクロで np=1000000+0 で664579番目(9999991)をたたき出した。 下のエラトステネス篩では np=10000000で664579番目(9999991)をたたき出した。 何故まったく同じ結果となったかわからない。 np=npだから?しかしエラトステネスの篩は早いんじゃないのかな。 結果は同じでもタイムはエラトステネスが早かったのか? も少し、調べてみます。 貴方のアイコンは”数学”カテゴリーでもよく見ます。昔から。 とにかく、マクロを教えてくれてありがとう。感謝です。
補足
上の方のマクロ np=1000000 t=0.796875って1秒もたってないのか? 78498番目(999983) をたたき出す。 この辺のマクロでタイマーは必須。 次に np=1000000+00をやったら デバッグとか言って黄色い行ラインが出てくるがこれを正しく 修正すると、走るのではないか? 下のマクロはまだやってない。 エラトステネスの篩はその分早くなるはずだが。