根据最小公倍数的公式,要先求出最大公约数。
最大公约数由欧几里德法求出。
/**
* 求两个整数的最小公倍数
* @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>";