Hướng dẫn dùng gcd trong PHP

    • Math
      • average
      • factorial
      • fibonacci
      • gcd
      • isEven
      • sPrime
      • lcm
      • median
  • Math
    • average
    • factorial
    • fibonacci
    • gcd
    • isEven
    • sPrime
    • lcm
    • median

Show

    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
    

    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

    Việt Nam Tutor

    Hi, mình là Anthony Nguyễn. Hiện đang là Full Stack Developer. Mong được giao lưu với bạn đọc và nhận được nhiều gạch đá, xi măng, sỏi để xây biệt thự:)