タイトル | : Re: 素数表示、カウント SOSU5.EXE 更新 |
投稿日 | : 2024/02/29(木) 18:45 |
投稿者 | : konno | 番 号 | : 11123 11120 番 konno さんへのコメント |
SOSU5 の速度アップとバグ取りですが、他の素数計算プログラムを参考にしました。 旧版は、一桁の素数を決め打ちでやっていました。 for i!=2 to 10 if i!=2 then gosub print1:co!=co!+1:co1%(co!)=i! if i!=3 then gosub print1:co!=co!+1:co1%(co!)=i! if i!=5 then gosub print1:co!=co!+1:co1%(co!)=i! if i!=7 then gosub print1:co!=co!+1:co1%(co!)=i! next i! これを全部コメントにして、2だけ決め打ちにしました。 さらに、偶数チェックを FOR STEP 2 で出来ることがわかり、以下のように i!=2:gosub print1 :co!=co!+1:co1%(co!)=i! '★ 2は素数に決め打ち a!=0 for i!=3 to no!-1 step 2 '★ 偶数をスキップ loop1: ' no1$=str$(i!) '★ FOR steo 2 の ' le=len(no1$) '★スキップにより ' a!=val(right$(no1$,1)) '★この4行が ' b!=int (a!/2):if b!=a!/2 then i!=i!+1:goto loop1 '★要らなくなった gosub loop2 ' next i! これで少し速度アップ出来たようです。 SOSU4.EXE Number = 50000 0: 0'34 Prime Number = 5133 SOSU5.EXE Number.50000 0: 0'32 Prime Number = 5133 うーん、誤差範囲かな。(^^; あとは配列の見直しで、10万までだったのを30万まで拡大出来ました。 速度的にも Number.300000 0:12'20 Prime Number = 25997 12分もかかるので、この方式はこの辺が限界ですね。(^^; さて、次はもっと速い別のアルゴリズムにしましょう。
- No.11123 一括表示へ - コメント元:11120 一括表示へ - [ 返信 ] [引用無し] pre