PHP获取数字的平方数量

时间:2017-04-30 11:11:10

标签: php math

我有一个函数,给定两个整数A和B,返回区间[A..B]内的整个正方形的数量(包括两端)

例如,假设$ A = 4且$ B = 17,则函数应返回3,因为区间[4..17]中有三个整数平方。即4 = 2 *,9 = 3 *和14 = 4 *

我如何得到一些数字的正方形数字?

2 个答案:

答案 0 :(得分:1)

此函数循环遍历$start$end之间的所有整数。如果数字的平方根等于其整数部分,则$count增加1。

function countSquares($start, $end)
{
    $count = 0;
    for($n=$start;$n<=$end;$n++)
    {
        if(pow($n, 0.5) == intval(pow($n, 0.5)))
        {
            //echo "$n<br>";
            $count++;
        }
    }
    return $count;
}

echo countSquares(4, 17);

然而,当使用大数字时,第一个功能非常慢 这个其他功能可以更快地完成工作,而且代码也更短 $start$end之间的整数平方根的数量是通过将0$end之间的整数平方根的数量减去0$start-1之间的整数平方根的数量来获得的。 1}}和$start-1。 (我使用function countSquares2($start, $end) { return floor(pow($end, 0.5)) - floor(pow($start-1, 0.5)); } echo countSquares2(1000000, 10000000); ,因为您的间隔包括起始编号)

{{1}}

答案 1 :(得分:0)

或者你可以使用sqrt函数来实现:

function getSquaresInRange($a, $b){
    return floor(sqrt($b)) - ceil(sqrt($a)) + 1;
}