Для числа в последовательности за номером:
Код:
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;
Может быть, цикл возможно преобразовать в одну формулу, не силен
