我试图编写一个算法来找到GCD(最大公约数),但我的函数结果是Array
我做错了!拜托,我不想要另一个aproche或一个现成的算法copie过去,我想知道我做错了什么
<?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);
?>
答案 0 :(得分:2)
首先:你想找到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
;
OR:
1)将if ($i % $val1 === 0 && $i % $val2 === 0)
替换为if ($val1 % $i === 0 && $val2 % $i === 0)
;
2)将return $final;
替换为return max($final);
;
答案 1 :(得分:0)
返回$ final是一个数组。对于打印阵列,请使用print_r(YOUR_VALUE)。如果你使用了回声&#39;你只能打印字符串值,而不是数组;