Для числа в последовательности за номером:
	Код:
	function getprgvalue(const num:Integer):integer;
 var transpcount, pow2, m, a:Integer;
    function log2i(const cf:Integer):Integer;
      var n:Single;
    begin
     n:=log2(cf);
     if frac(n)<>0 then result:=trunc(n)+1 else result:=trunc(n);
    end;
begin
 transpcount:=0;
 m:=num;
 while m>1 do
 begin
  pow2:=log2i(m);
  a:=round(power(2, pow2)/2);
  m:=m-a;
  inc(transpcount);
 end;
 result:=transpcount mod 3;
end; 
 
Может быть, цикл возможно преобразовать в одну формулу, не силен
