[PHP]求最小公倍数

根据最小公倍数的公式,要先求出最大公约数。

最大公约数由欧几里德法求出。


/**
 * 求两个整数的最小公倍数
 * @param $a int
 * @param $b int
 * @return int/bool
 * @author wonjia
 */
function minMultiple($a, $b) {
    if(!is_int($a) || !is_int($b)){
        return false;
    }

    if($a==0 || $b==0){
        return 0;
    }

    //取绝对值
    $a = abs($a);
    $b = abs($b);

    if($a == $b){
        return $a;
    }

    //欧几里得法 求最大公约数
    $max = max($a, $b);
    $min = min($a, $b);
    while(1){
        $max = $max % $min;
        if($max === 0){
            $maxDiviso = $min;
            break;
        }
        //两个值互相交换
        $max = $max + $min;
        $min = $max - $min;
        $max = $max - $min;
    }

    //根据最大公约数求最小公倍数
    $minMultiple = $a * $b / $maxDiviso;

    return $minMultiple;
}

$a = 12;
$b = 8;
$c = minMultiple($a, $b);
echo "{$a}和{$b}的最小公倍数是{$c} <br>";

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注