最速の素数判定アルゴリズム  

このエントリーをはてなブックマークに追加
207199
とりあえず今日 出来た所まで

まず、ビット反転ルーチン 今回は必要無いかと思ったんですが
実数2つのFFT上で掛算をする時に必要だったので

procedure MkBitRevTbl(n:integer;var tbl:array of integer);
var i,j,k,mh,m:integer;
begin
 m :=1 shl n;
 mh:=m div 2; //mh=msbのみ1のデータ
 i:=0; // 1単位に増えるアドレス
 j:=0; // ビット反転アドレス
 while true do
 begin
  tbl[i]:=j;
  inc(i);if i>=m then break;
  k:=mh;        //mh=msbのみ1のデータ
  while k<=j do begin //上のビットが立っていたら
   j:= j and (not k); //それを落としてゆく i-kでも良い筈
   k:=k div 2;
  end;
  j:= j or k;
 end;
end;