我试图写一个算法来找到GCD(最大公约数),但我的函数的结果是Array
我做错了什么!!拜托,我不想再有一个围裙或是一个现成的算法,我想知道我做错了什么
<?php
function pgcd($val1, $val2){
if (!is_numeric($val1) || !is_numeric($val2)){
return null;
}
$i = 1;
$final = array();
while($i <= min($val1, $val2)){
if ($i % $val1 === 0 && $i % $val2 === 0){
$final[] = $i;
}
$i++;
}
return $final;
}
echo pgcd(120,420);
?>
最佳答案
首先:你想找到gcd还是所有公约数?
如果是GCD,则代码中有一些错误:
1)用$final = array();
替换$final = null;
,或用return $final;
替换return $final[0];
;
2)用if ($i % $val1 === 0 && $i % $val2 === 0)
替换if ($val1 % $i === 0 && $val2 % $i === 0)
;
3)用$final[] = $i;
代替$final = $i
;
或:
1)用if ($i % $val1 === 0 && $i % $val2 === 0)
替换if ($val1 % $i === 0 && $val2 % $i === 0)
;
2)用return $final;
替换return max($final);
;
关于php - 试图找到使用PHP函数返回数组的GCD?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34044957/