素数 "列挙" アルゴリズムを極めるスレ
■ このスレッドは過去ログ倉庫に格納されています
0544Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧∩ /
頒゚Д゚;彡< 除さん、いらんのですかい!
,;゙⊃,ジ \_____
〜ミ ,,○
∪ しらかた。
なんかコムズカな話ばかりでよくわかなんですが…
2,3,5,7をぶち縫いてメモリ圧縮したTBit(見た目Boolean配列)
のIndexにアクセスするために、こんな助産してるんですが、
これがいらんくなる?
function TEratosthenesSieveTBitsCutMultiplesOfTwoThreeFiveSeven.AccessInsideIndex(
OutSideIndex: Cardinal): Cardinal;
var
DivBuffer, ModBuffer: Integer;
begin
DivBuffer := OutSideIndex div (2*3*5*7);
ModBuffer := OutSideIndex mod (2*3*5*7);
Result := DivBuffer*48; //1..210/211..(210*2)の間に48つの素数がある
case ModBuffer of
1..10:Result := Result + 1;
11..12:Result := Result + 2;
13..16:Result := Result + 3;
17..18:Result := Result + 4;
19..22:Result := Result + 5;
23..28:Result := Result + 6;
あと、略
■ このスレッドは過去ログ倉庫に格納されています