Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP获取的平方数最多为个数_Php_Math - Fatal编程技术网

PHP获取的平方数最多为个数

PHP获取的平方数最多为个数,php,math,Php,Math,我有一个函数,给定两个整数a和B,返回区间[a..B]内的整数平方数(包括两端) 例如,给定$A=4和$B=17,函数应该返回3,因为区间[4..17]中有三个整数平方。即4=2*、9=3*和14=4* 如何获得一个整数的平方数?此函数循环遍历$start和$end之间的所有整数。如果数字的平方根等于其整数部分,则$count增加1 function countSquares($start, $end) { $count = 0; for($n=$start;$n<=$en

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

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


如何获得一个整数的平方数?

此函数循环遍历
$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);

也可以使用sqrt函数:

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

祝贺你有一个功能。您有什么问题吗?您应该提供一种方法,包括相关的源代码片段。否则它闻起来像:“请为我做编码工作”。考虑一个循环测试,如果平方根是整数。我可以假设你是“代码>16=4 *<代码>,而不是<代码> 14=4 *< /代码>?我设法用伽西莫多的注释函数解决方案($a,$b){$p= 0)计算出这个解;而($$$b){if(gMP-PrimeExpRead($a)){$p++;} $a++;}返回$p;}。在
countSquares2
中有非常好的逻辑!为了得到更好的答案,你可以解释更多的数学细节,为什么
floor(pow($float_num,0.5))
是从0开始的平方数。对于数学背景较低的人来说,这并不一定是显而易见的。解释甚至可以从这一点开始,即0.5的幂实际上是平方根。PS:我没有在PHP中测试它。使用否定参数调用它时的行为是什么?考虑清理输入,也就是当结束小于启动时。
function getSquaresInRange($a, $b){
    return floor(sqrt($b)) - ceil(sqrt($a)) + 1;
}