Skip to main content

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

------Brings to you with ♥️ by vietnamtutor.com
Việt Nam Tutor

Xin chào, tôi là Anthony Nguyễn, một lập trình viên Full Stack với nhiều năm kinh nghiệm trong ngành công nghệ thông tin. Tôi tận dụng kiến thức và kỹ năng của mình để tạo ra các giải pháp công nghệ đột phá và đáp ứng những bài toán thách thức, phức tạp.Tôi luôn sẵn sàng để kết nối và học hỏi từ cộng đồng, cũng như chia sẻ những kiến thức và thông tin hữu ích. Với tôi, việc xây dựng kiến thức là như xây dựng một tòa nhà - cần có sự kiên nhẫn, kiến thức vững chắc, và sự cống hiến để tạo nên sự thành công.Nếu bạn có câu hỏi, ý kiến, hoặc muốn kết nối với tôi để thảo luận về công nghệ, đừng ngần ngại liên hệ tôi. Rất mong được nhận gạch đá từ các bạn!

Leave a Reply