素数 "列挙" アルゴリズムを極めるスレ
■ このスレッドは過去ログ倉庫に格納されています
0304デフォルトの名無しさん
NGNG>どうせなら 3*5*7*11*13 のテーブルを用意してリピートして使えば
>17から開始出来ます。
3と5の倍数にマークをつけた表は 3*5=15ワード毎に繰返します
3,5,7,11,13の倍数全部にマークを付けた表は同じく全部の積のワード毎に繰返します。
ですから、最初に倍数全部にマークを付けたそのサイズの表を作って、それをMove関
数を使ってコピーし、
最後に 3.5.7,11,13の所のマークを消せば 初期化が出来る訳です。
>あと、2個ペアでループを回すのも速くなります
同じワードを読んで書く場合、キャッシュが効きます。キャッシュが効けば、2度目のアクセスは
ほぼ無いのと同じです。
特に小さな数の間に大きな効果があります。
たとえば 17 19 をペアにして x,yの小さい方に xなら17 yなら19を足すようにすると、
コードは増えますが、その実行サイクルはメモリアクセスに完全に隠れてしまいます
■ このスレッドは過去ログ倉庫に格納されています