试图使用php函数返回数组找到gcd?

时间:2015-12-02 14:15:36

标签: php algorithm

我试图编写一个算法来找到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);

 ?>

2 个答案:

答案 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;你只能打印字符串值,而不是数组;