当前位置:首页 > PHP

php实现欧几里得算法实现

2026-03-13 02:05:59PHP

欧几里得算法简介

欧几里得算法(Euclidean Algorithm)用于计算两个非负整数的最大公约数(GCD)。其基本原理是通过反复的除法运算,将问题逐步简化,直到余数为0,此时的除数即为最大公约数。

PHP实现欧几里得算法

以下是一个基础的PHP实现示例,包含递归和非递归两种方式:

递归实现

function gcd_recursive($a, $b) {
    if ($b == 0) {
        return $a;
    } else {
        return gcd_recursive($b, $a % $b);
    }
}

非递归实现

function gcd_iterative($a, $b) {
    while ($b != 0) {
        $temp = $a % $b;
        $a = $b;
        $b = $temp;
    }
    return $a;
}

使用示例

$num1 = 48;
$num2 = 18;

echo "递归方式计算GCD: " . gcd_recursive($num1, $num2) . "\n";
echo "非递归方式计算GCD: " . gcd_iterative($num1, $num2) . "\n";

算法优化

对于较大的整数,可以加入输入验证和优化处理,例如确保输入为非负整数,并在运算前比较大小以减少循环次数:

php实现欧几里得算法实现

function gcd_optimized($a, $b) {
    $a = abs($a);
    $b = abs($b);
    if ($a < $b) {
        list($a, $b) = array($b, $a);
    }
    while ($b != 0) {
        list($a, $b) = array($b, $a % $b);
    }
    return $a;
}

注意事项

  • 输入应为非负整数,否则需通过abs()函数处理。
  • 递归方式在极端情况下可能导致栈溢出,非递归方式更安全。
  • 时间复杂度为O(log min(a, b)),效率较高。

分享给朋友:

相关文章

php实现欧几里得算法实现

php实现欧几里得算法实现

欧几里得算法简介 欧几里得算法(辗转相除法)用于计算两个非负整数的最大公约数(GCD)。其核心思想是通过反复用较小数除较大数取余,直到余数为0,此时的除数即为最大公约数。 PHP实现方法 以下是用P…

js实现基数算法

js实现基数算法

基数排序(Radix Sort)简介 基数排序是一种非比较型整数排序算法,通过逐位分配和收集实现排序。适用于整数或固定格式字符串,时间复杂度为O(nk),其中n是元素数量,k是数字位数。 实现基数排…

js实现贪心算法

js实现贪心算法

贪心算法简介 贪心算法是一种在每一步选择中都采取当前状态下最优(即最有利)的选择,从而希望导致结果是全局最优的算法。贪心算法常用于解决优化问题,如最短路径、最小生成树等。 贪心算法的基本步骤 贪心算…

排序算法 php实现

排序算法 php实现

以下是在PHP中实现常见排序算法的几种方法,每种算法均附上代码示例和简要说明: 冒泡排序 通过重复比较相邻元素并交换位置完成排序,时间复杂度为O(n²)。 function bubbleSort(…

php 实现排序算法

php 实现排序算法

冒泡排序 冒泡排序通过多次遍历数组,每次比较相邻元素并交换位置,将较大元素逐步移至数组末尾。 function bubbleSort($array) { $n = count($arra…

php算法实现

php算法实现

PHP 算法实现指南 PHP 作为一种广泛使用的服务器端脚本语言,适用于多种算法实现场景。以下是常见算法在 PHP 中的实现方法。 排序算法 冒泡排序 function bubbleSort($a…