Math
average
Trả về kết quả trung bình cộng của 2 hoặc nhiều số
function average(...$items)
{
$count = count($items);
return $count === 0 ? 0 : array_sum($items) / $count;
}
Ex:
average(1, 2, 3); // 2
factorial
Trả về giai thừa của một số
function factorial($n)
{
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
Ex:
factorial(6); // 720
fibonacci
Trả về mảng fibo giá trị lên đến đối số truyền vào
function fibonacci($n)
{
$sequence = [0, 1];
for ($i = 2; $i < $n; $i++) {
$sequence[$i] = $sequence[$i-1] + $sequence[$i-2];
}
return $sequence;
}
Ex:
fibonacci(6); // [0, 1, 1, 2, 3, 5]
gcd
Tìm ước số chung lớn nhất của 2 or nhiều số
function gcd(...$numbers)
{
if (count($numbers) > 2) {
return array_reduce($numbers, 'gcd');
}
$r = $numbers[0] % $numbers[1];
return $r === 0 ? abs($numbers[1]) : gcd($numbers[1], $r);
}
Ex:
gcd(8, 36); // 4 gcd(12, 8, 32); // 4
isEven
Kiểm tra là số chẵn
function isEven($number)
{
return ($number % 2) === 0;
}
Ex:
isEven(4); // true
sPrime
Kiểm tra có phải là số nguyên tố
function isPrime($number)
{
$boundary = floor(sqrt($number));
for ($i = 2; $i <= $boundary; $i++) {
if ($number % $i === 0) {
return false;
}
}
return $number >= 2;
}
Ex:
isPrime(3); // true
lcm
Trả về bội số chung nhỏ nhất của 2 hoặc nhiều số
function lcm(...$numbers)
{
$ans = $numbers[0];
for ($i = 1, $max = count($numbers); $i < $max; $i++) {
$ans = (($numbers[$i] * $ans) / gcd($numbers[$i], $ans));
}
return $ans;
}
Ex:
lcm(12, 7); // 84 lcm(1, 3, 4, 5); // 60
median
Trả về số trung vị của một mảng
function median($numbers)
{
sort($numbers);
$totalNumbers = count($numbers);
$mid = floor($totalNumbers / 2);
return ($totalNumbers % 2) === 0 ? ($numbers[$mid - 1] + $numbers[$mid]) / 2 : $numbers[$mid];
}
Ex:
median([1, 3, 3, 6, 7, 8, 9]); // 6 median([1, 2, 3, 6, 7, 9]); // 4.5
Math
average
Trả về kết quả trung bình cộng của 2 hoặc nhiều số
function average(...$items)
{
$count = count($items);
return $count === 0 ? 0 : array_sum($items) / $count;
}
Ex:
average(1, 2, 3); // 2
factorial
Trả về giai thừa của một số
function factorial($n)
{
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
Ex:
factorial(6); // 720
fibonacci
Trả về mảng fibo giá trị lên đến đối số truyền vào
function fibonacci($n)
{
$sequence = [0, 1];
for ($i = 2; $i < $n; $i++) {
$sequence[$i] = $sequence[$i-1] + $sequence[$i-2];
}
return $sequence;
}
Ex:
fibonacci(6); // [0, 1, 1, 2, 3, 5]
gcd
Tìm ước số chung lớn nhất của 2 or nhiều số
function gcd(...$numbers)
{
if (count($numbers) > 2) {
return array_reduce($numbers, 'gcd');
}
$r = $numbers[0] % $numbers[1];
return $r === 0 ? abs($numbers[1]) : gcd($numbers[1], $r);
}
Ex:
gcd(8, 36); // 4 gcd(12, 8, 32); // 4
isEven
Kiểm tra là số chẵn
function isEven($number)
{
return ($number % 2) === 0;
}
Ex:
isEven(4); // true
sPrime
Kiểm tra có phải là số nguyên tố
function isPrime($number)
{
$boundary = floor(sqrt($number));
for ($i = 2; $i <= $boundary; $i++) {
if ($number % $i === 0) {
return false;
}
}
return $number >= 2;
}
Ex:
isPrime(3); // true
lcm
Trả về bội số chung nhỏ nhất của 2 hoặc nhiều số
function lcm(...$numbers)
{
$ans = $numbers[0];
for ($i = 1, $max = count($numbers); $i < $max; $i++) {
$ans = (($numbers[$i] * $ans) / gcd($numbers[$i], $ans));
}
return $ans;
}
Ex:
lcm(12, 7); // 84 lcm(1, 3, 4, 5); // 60
median
Trả về số trung vị của một mảng
function median($numbers)
{
sort($numbers);
$totalNumbers = count($numbers);
$mid = floor($totalNumbers / 2);
return ($totalNumbers % 2) === 0 ? ($numbers[$mid - 1] + $numbers[$mid]) / 2 : $numbers[$mid];
}
Ex:
median([1, 3, 3, 6, 7, 8, 9]); // 6 median([1, 2, 3, 6, 7, 9]); // 4.5
Còn nữa…
Source: https://github.com/30-seconds/30-seconds-of-php-code



