//概念以及实例:
求两个数的最大公约数和最小公倍数
//最大公约数:就是既可以整除numb1,也可以整除numb2,小于两个数中的最小数(numb1)
//最小公倍数:再拿这两个数分别除以最大公约数,再乘以最大公约数
$numb1 = 20 ;
$numb2 = 30 ;
$min = $numb1 < $numb2 ? $numb1 : $numb2;
$gys = 1 ;
for ($i = $min;$i >= 1 ;$i -- ){ //[20,1)从大到小过渡,如果第一个就是最大的,就可以终止循环了
if ($numb1 % $i == 0 && $numb2 % $i == 0 ){
$gys = $i;
break;
}
}
$gbs = $numb1*$numb2/$gys;
echo "最大公约数为{$gys}";
echo "最小公倍数为{$gbs}";
echo "<hr>";
//辗转相除法
//每一次拿最大数和最小数做取余操作(30%20),不等于0(余10),循环继续执行,上一次计算的余数(10)做除数,上一次的除数(20)做被除数,(20%10)当等于0的时候,结束,这次的除数(10)为最大公约数.
$numb1=20;
$numb2=30;
$max = $numb1 > $numb2 ? $numb1 : $numb2;
$min = $numb1 + $numb2 -$max;
while($max % $min != 0){
$temp = $min;
$min = $max % $min;
$max = $temp;
}
echo "最大公约数为{$min}";
$gbs = $numb1 * $numb2 / $min;
//最小公倍数:再拿这两个数分别除以最大公约数,再乘以最大公约数
$numb1 = 20 ;
$numb2 = 30 ;
$min = $numb1 < $numb2 ? $numb1 : $numb2;
$gys = 1 ;
for ($i = $min;$i >= 1 ;$i -- ){ //[20,1)从大到小过渡,如果第一个就是最大的,就可以终止循环了
if ($numb1 % $i == 0 && $numb2 % $i == 0 ){
$gys = $i;
break;
}
}
$gbs = $numb1*$numb2/$gys;
echo "最大公约数为{$gys}";
echo "最小公倍数为{$gbs}";
echo "<hr>";
//辗转相除法
//每一次拿最大数和最小数做取余操作(30%20),不等于0(余10),循环继续执行,上一次计算的余数(10)做除数,上一次的除数(20)做被除数,(20%10)当等于0的时候,结束,这次的除数(10)为最大公约数.
$numb1=20;
$numb2=30;
$max = $numb1 > $numb2 ? $numb1 : $numb2;
$min = $numb1 + $numb2 -$max;
while($max % $min != 0){
$temp = $min;
$min = $max % $min;
$max = $temp;
}
echo "最大公约数为{$min}";
$gbs = $numb1 * $numb2 / $min;
echo
"最小公倍数为{
$
gbs}"
;