gpt4 book ai didi

php - 寻找超过 2 个整数的 GCD(最大公约数)?

转载 作者:可可西里 更新时间:2023-11-01 12:41:31 24 4
gpt4 key购买 nike

我已经有一个函数可以找到 2 个数字的 GCD。

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

但是现在,我想扩展这个功能来寻找N点的GCD。有什么建议吗?

最佳答案

有一种更优雅的方式来做到这一点:

// Recursive function to compute gcd (euclidian method)
function gcd ($a, $b) {
return $b ? gcd($b, $a % $b) : $a;
}
// Then reduce any list of integer
echo array_reduce(array(42, 56, 28), 'gcd'); // === 14

如果您想使用 float ,请使用近似值:

function fgcd ($a, $b) {
return $b > .01 ? fgcd($b, fmod($a, $b)) : $a; // using fmod
}
echo array_reduce(array(2.468, 3.7, 6.1699), 'fgcd'); // ~= 1.232

您可以在 PHP 5.3 中使用闭包:

$gcd = function ($a, $b) use (&$gcd) { return $b ? $gcd($b, $a % $b) : $a; };

关于php - 寻找超过 2 个整数的 GCD(最大公约数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com