gpt4 book ai didi

php - 有没有一种聪明的方法可以用纯数学来做到这一点

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:44 26 4
gpt4 key购买 nike

我有这段代码似乎可以用纯数学(也许是对数?)来完成。你能帮帮我吗?

代码找到大于给定输入的 2 的第一个幂。例如,如果您给它 500,它会返回 9,因为 2^9 = 512 > 500。2^8 = 256 会太小,因为它小于 500。

function getFactor($iMaxElementsPerDir)
{
$aFactors = range(128, 1);
foreach($aFactors as $i => $iFactor)
if($iMaxElementsPerDir > pow(2, $iFactor) - 1)
break;
if($i == 0)
return false;
return $aFactors[$i - 1];
}

以下说法成立

getFactor(500)  = 9
getFactor(1000) = 10
getFactor(2500) = 12
getFactor(5000) = 13

最佳答案

您可以通过将输入中的位向右移动并检查是否为 0 来获得相同的效果。像这样。

i = 1
while((input >> i) != 0)
i++

return i

关于php - 有没有一种聪明的方法可以用纯数学来做到这一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24442261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com