Показать сообщение отдельно
  #3  
Старый 06.12.2012, 22:28
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Для числа в последовательности за номером:

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