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