获取数组值的最大公约数

/**
 * 获取最大公约数
 * @param array $data 数值数组(数值均为整数,不能都大于0)
 * @example get_zdgys([20,200,660,180,400,350]) 
 */
function get_zdgys($data = []) {
    $gys = [];
    $data_min = min($data);
    if ($data_min < 1) {
        return null;
    }
    for ($num = 1; $num <= $data_min; $num++) {
        $bool = true;
        foreach ($data as $d) {
            if ($d % $num > 0) {
                $bool = false;
                continue;
            }
        }
        if ($bool) {
            $gys[] = $num;
        }
    }
    return max($gys);
}


var_dump(get_zdgys([15,200,660,180,400,350]));

原文链接: 获取数组值的最大公约数 版权所有,转载时请注明出处,违者必究。
注明出处格式:php开发者 ( https://jiachunkuan.com/post-39.html )