<?php
class GreatestCommonDivisor
{
/**
* Get the divisor of a given number.
*
* @param int $num
* The number.
*
* @return int[]
* The divisors of the number.
*/
private function factors(int $num): array
{
return array_filter(
range(1, $num),
function (int $i) use ($num) {
return 0 === $num % $i;
}
);
}
/**
* Get the greatest common divisor.
*
* @param int ...$x
* The numbers.
*
* @return int
* The greatest common divisor.
*/
public function gcd(...$x): int
{
$x = array_map([$this, 'factors'], $x);
$intersect = array_intersect(...$x);
return end($intersect);
}
}
trait gcdTrait
{
/**
* Get the greatest common divisor.
*
* @param int ...$x
* The first number.
*
* @return int
* The greatest common divisor.
*/
function gcd(...$x): int
{
return (new GreatestCommonDivisor())->gcd(...$x);
}
}
class customClass {
use gcdTrait;
}
$foo = new customClass();
echo $foo->gcd(10, 20, 45);
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
5
Output for 5.6.0 - 5.6.40
Parse error: syntax error, unexpected ':', expecting ';' or '{' in /in/LCmNp on line 14
Process exited with code 255.