辗转相除法,也叫欧几里得算法,是一种快速求两个正整数最大公约数的方法。其基本思想是用较大数除以较小数,再用出现的余数去除除数,不断重复这个过程,直到余数为零为止,此时的除数即为两个数的最大公约数。
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编程求最大公约数与最小公倍数的方法示例
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
猜你喜欢
- ThinkPHP3.1.2 使用cli命令行模式运行的方法 2023-04-08
- tp5.1 框架查询表达式用法详解 2023-04-19
- Laravel框架控制器的middleware中间件用法分析 2023-02-21
- Laravel 模型关联基础教程详解 2023-02-13
- laravel实现于语言包的完美切换方法 2023-02-21
- thinkPHP5框架中widget的功能与用法详解 2022-10-27
- php数组函数序列之array_key_exists() – 查找数组键名是否存在 2023-12-29
- PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结 2023-03-17
- 探讨php中遍历二维数组的几种方法详解 2023-12-31
- php链式操作的实现方式分析 2023-02-05