当前位置:首页 > 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实现算法

PHP 实现常见算法的方法 PHP 可以实现多种算法,包括排序、搜索、递归、动态规划等。以下是几种常见算法的 PHP 实现方式。 冒泡排序(Bubble Sort) 冒泡排序通过多次遍历数组,每…

php 实现算法

php 实现算法

PHP 实现常见算法的方法 PHP 作为一门服务器端脚本语言,可以实现多种算法。以下是一些常见算法的 PHP 实现示例。 排序算法 冒泡排序 function bubbleSort($array)…

js实现贪心算法

js实现贪心算法

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

js回文算法实现

js回文算法实现

回文算法的实现方法 方法一:使用字符串反转 将字符串反转后与原字符串比较,若相同则为回文。 function isPalindrome(str) { const reversedStr…

php实现欧几里得算法实现

php实现欧几里得算法实现

欧几里得算法简介 欧几里得算法(辗转相除法)用于计算两个非负整数的最大公约数(GCD)。其核心思想是:gcd(a, b) = gcd(b, a % b),直到余数为0时,此时的除数即为最大公约数。…

php实现红包算法

php实现红包算法

红包算法实现思路 红包算法的核心在于公平性和随机性,常见的有固定金额和随机金额两种模式。以下介绍几种常见的红包算法实现方法。 固定金额红包 固定金额红包是指每个红包的金额相同,实现较为简单。 fu…