PHP获取的平方数最多为个数
我有一个函数,给定两个整数a和B,返回区间[a..B]内的整数平方数(包括两端) 例如,给定$A=4和$B=17,函数应该返回3,因为区间[4..17]中有三个整数平方。即4=2*、9=3*和14=4*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
如何获得一个整数的平方数?此函数循环遍历
$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;
}