对于刚学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 条评论