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

10-13 02:47