辗转相除法,也叫欧几里得算法,是一种快速求两个正整数最大公约数的方法。其基本思想是用较大数除以较小数,再用出现的余数去除除数,不断重复这个过程,直到余数为零为止,此时的除数即为两个数的最大公约数。
PHP编程求最大公约数与最小公倍数的方法示例
最大公约数
方法一:辗转相除法
辗转相除法,也叫欧几里得算法,是一种快速求两个正整数最大公约数的方法。其基本思想是用较大数除以较小数,再用出现的余数去除除数,不断重复这个过程,直到余数为零为止,此时的除数即为两个数的最大公约数。
示例代码:
function gcd($a, $b)
{
if ($b == 0) {
return $a;
} else {
return gcd($b, $a % $b);
}
}
echo gcd(30, 42); // 输出6
方法二:更相减损法
更相减损法是用来求两个正整数的最大公约数的另一种方法。其基本思想是不断用两数中较大数减去较小数,然后将所得的差与较小数比较,如果相等,则当前较小数即为最大公约数,否则继续执行减操作,直到两个数相等时结束。
示例代码:
function gcd2($a, $b)
{
while ($a != $b) {
if ($a > $b) {
$a -= $b;
} else {
$b -= $a;
}
}
return $a;
}
echo gcd2(30, 42); // 输出6
最小公倍数
方法一:利用最大公约数求解
求两个正整数的最小公倍数,可以通过它们的最大公约数来求解。最小公倍数等于两数之积除以最大公约数。
示例代码:
function lcm($a, $b)
{
$gcd = gcd($a, $b);
return $a * $b / $gcd;
}
echo lcm(30, 42); // 输出210
方法二:穷举法
方法二是一种效率较低的求解方法,它的基本思想是从两数的较大值开始想要得到的最小公倍数是学生概率和两个数的积。
示例代码:
function lcm2($a, $b)
{
$max = max($a, $b);
while (true) {
if ($max % $a == 0 && $max % $b == 0) {
return $max;
}
$max++;
}
}
echo lcm2(30, 42); // 输出210
以上是求解最大公约数和最小公倍数的两种方法以及相应的示例代码。
沃梦达教程
本文标题为:PHP编程求最大公约数与最小公倍数的方法示例
基础教程推荐
猜你喜欢
- laravel使用redis队列实例讲解 2023-05-20
- php面向对象全攻略 (四)构造方法与析构方法 2023-12-18
- php实现通过stomp协议连接ActiveMQ操作示例 2023-04-02
- ThinkPHP类似AOP思想的参数验证的实现方法 2023-03-18
- PHP实现linux命令tail -f 2024-04-10
- tp5递归 无限级分类详解 2023-03-03
- laravel源码分析队列Queue方法示例 2023-06-26
- laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例 2023-03-19
- PHP聊天室简单实现方法详解 2022-11-28
- php往mysql中批量插入数据实例教程 2022-11-28