PHP 求最大公约数与最小公倍数

本文详细介绍了三种不同的算法用于求解最大公约数与最小公倍数,包括辗转相除法、加减法以及递归算法,并通过实例演示了每种方法的实现过程。
//求最大公约数
function max_divisor($a,$b)
{
<wbr><wbr><wbr> $n = min($a, $b);</wbr></wbr></wbr>
<wbr><wbr><wbr> for($i=$n; $i&gt;1; $i--)</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> if (is_int($a/$i)&amp;&amp;is_int($b/$i))</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> return $i; <wbr> //此</wbr></wbr></wbr></wbr></wbr></wbr>处如果用echo $i;则输出结果为432;故应区分echo、return的区别
<wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
<wbr><wbr><wbr> return 1;</wbr></wbr></wbr>
}
//求最小公倍数
function <wbr> min_multiple($a, $b)</wbr>
{ <wbr></wbr> <wbr>if($b==0) <wbr><wbr> //</wbr></wbr></wbr>一定要考虑除数不能为零
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> return $b;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }else{</wbr></wbr></wbr>
<wbr><wbr><wbr> $m = max($a, $b);</wbr></wbr></wbr>
<wbr><wbr><wbr> $n = min($a, $b);</wbr></wbr></wbr>
<wbr><wbr><wbr> for($i=2; ; $i++)</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> if (is_int($m*$i/$n))</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> {</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> return $i;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> }</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
}
<wbr><wbr><wbr> return $a*$b;</wbr></wbr></wbr>
}

//辗转相除法求最大公约数

<wbr>function max_divisor2($a, $b)</wbr>
{
<wbr><wbr><wbr> if($b==0)</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> return $a;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
<wbr><wbr><wbr> else</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> return max_divisor2($b,($a%$b));</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
}

//加减法求最大公约数
function max_divisor3($a, $b)
{
<wbr><wbr><wbr> if ($a == $b)</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> return $a;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
<wbr><wbr><wbr> elseif($a &gt; $b)</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> $a = $a-$b;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
<wbr><wbr><wbr> else</wbr></wbr></wbr>
<wbr><wbr><wbr> {</wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr> $b = $b-$a;</wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr> }</wbr></wbr></wbr>
<wbr><wbr><wbr> return max_divisor3($a, $b);</wbr></wbr></wbr>
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值