辗转相除法简洁介绍

//概念以及实例: 求两个数的最大公约数和最小公倍数
//最大公约数:就是既可以整除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;
echo "最小公倍数为{ $ gbs}" ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值