任意数字“2”次方的表示使用PHP
我尝试玩php,但是我卡在一个地方,在那里我测试了$n=1024的值,然后需要超过60秒,所以php出现超时错误,我不知道如何克服这个问题,如果我唯一的要求是在 20 + ---+ 2n 表单中显示任何输入数字。
尝试下面的代码,n=121,我得到了这个,但我希望在 2n 中也表示 57 形式,所以我尝试了递归,但没有成功。
看看给定的编号如何。以“2”的幂表示:
20 + 21 + 22 + 2 + 24+ 25 + 26+ 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");
?>
I tried to play with php,however I got stuck at one place, where I tested value of $n=1024, then it takes more than 60sec,so timeout error of php arises,I don't know how to overcome this problem,if my only requirement is to present any input number in the 20 + ---+ 2n Form.
trying below code with n=121,I got this,but I wish to represent 57 also in 2n
Form,So I tried recursion,which didn't worked.
see how a given no. be represented in powers of '2':
20 + 21 + 22 +
2 + 24+ 25 + 26+ 57
CODE:
<?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");
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不需要递归或类似的东西,只需转换为二进制并循环字符:
工作示例:
No need for recursion or anything like that, just convert to binary and loop through the characters:
Working example:
您不能使用 - base_convert() 将字符串转换为二进制,然后根据位的位置格式化输出?
Cant you use - base_convert() to convert the string to binary, then format your output based on the position of bits?
这是一个笑话吧?
哦,不是吗?
好吧,好吧
看看 decbin 函数。不是更容易吗?
It is a joke right?
Oh it isn't?
Well ok
take look at decbin function. Isn't it easier?
您可以通过禁用超时来克服超时限制:
You can overcome the timeout restriction by disabling the timeout: