当前位置:首页 > 叨叨念念 > PHP求最大公约数和最小公倍数

PHP求最大公约数和最小公倍数

叨叨念念 / 星之宇 / 2021-11-24 21:47 / 浏览:494 / 评论:0

对于刚学PHP的新手来讲,用php求多个数的最大公约数和最小公倍数无疑是非常经典的一道练习题,对于逻辑和递归的考验还是相当到位的。


1、最大公约数

最大公约数指某几个整数共有因子中最大的一个。

如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。比如,12和15的公约数有1,3,所以12和15的最大公约数是31。


PHP求多个数的最大公约数代码:

function gcd($a, $b) {
    if ($b == 0) {
        return $a;
    }
    return gcd($b, $a % $b);
}
function gcdMax(array $numbers) {
    $result = $numbers[0];
    foreach ($numbers as $number) {
        $result = gcd($result, $number);
    }
    return $result;
}
$number = [24, 36, 48, 60, 72, 90, 108, 120, 144, 180];
$gcd = gcdMax($number);
echo '数组['.implode(',',$number).']的最大公约数是'.$gcd;//数组[24,36,48,60,72,90,108,120,144,180]的最大公约数是6


2、最小公倍数

最小公倍数是两个或多个整数共有的倍数中最小的一个。换句话说,它是两个或多个整数的公倍数中最小的一个正整数。


PHP求多个数的最小公倍数代码:

function lcm($a, $b) {
    return abs($a * $b) / gcd($a, $b);
}
function lcmMin(array $numbers) {
    $result = 1;
    foreach ($numbers as $number) {
        $result = lcm($result, $number);
    }
    return $result;
}
$number = [24, 36, 48, 60, 72, 90, 108, 120, 144, 180];
$lcm = lcmMin($number);
echo '数组['.implode(',',$number).']的最小公倍数是'.$lcm;//数组[24,36,48,60,72,90,108,120,144,180]的最小公倍数是2160

目前有 0 条评论

    • 昵称
    • 邮箱
    • 网址