Я пытался поиграть с php, однако я застрял в одном месте, где я тестировал значение $ n = 1024, затем это занимает более 60 секунд, поэтому возникает ошибка тайм-аута php, я не знаю, как ее преодолеть эта проблема, если мое единственное требование состоит в том, чтобы представить любой входной номер в форме 2 0 + --- + 2 n .
пробуя приведенный ниже код с n = 121, я получил это, но я хочу представить 57 также в 2 n
Форма, поэтому я попробовал рекурсию, которая не сработала.
посмотри как дано нет. быть представленным в степени «2»:
2 0 + 2 1 + 2 2 +
2 + 2 4 + 2 5 + 2 6 + 57
КОД:
<?php
echo("see how a given no. be represented in powers of '2' :<br/>\n");
$n=121;
$two_pow=array(
pow(2,0),pow(2,1),pow(2,2),pow(2,3),pow(2,4),pow(2,5),
pow(2,6),pow(2,7),pow(2,8),pow(2,9),pow(2,10)
);
//print_r($two_pow);
$i=0;
while($n>=$two_pow[$i])
$i++;
/* displaying 2^3*/
if($i>0)
$ij=$i-1;
/* diplaying difference of give N and 2^i*/
$diff=$n-$two_pow[$ij];
if($n>0)
{
for($i=0;$i<=$ij;$i++)
{
echo("2<sup> $i </sup>"."+ \n");
if($i==$ij && $diff>0)
{
echo("\n". $diff);
}
}
}
else
echo("<br/>not possible for values less then zero");
?>