How to find all divisors of a number in PHP

1 Answer

0 votes
<?php

/*
 * Function: findDivisors
 * Purpose: Efficiently find all divisors of a number using sqrt(n).
 *
 * Explanation:
 *   - We loop only up to sqrt(n), which reduces the number of iterations.
 *   - If $i divides $n, then both $i and $n / $i are divisors.
 *   - If $i == $n / $i (perfect square), we add it only once.
 *   - Finally, we sort the list so the divisors appear in ascending order.
 */
function findDivisors($n) {
    $divisors = [];
    $limit = (int)sqrt($n);

    for ($i = 1; $i <= $limit; $i++) {
        if ($n % $i == 0) {
            $divisors[] = $i; // Add the smaller divisor

            if ($i != $n / $i) {
                $divisors[] = $n / $i; // Add the paired divisor
            }
        }
    }

    sort($divisors);

    return $divisors;
}

$num = 24;

$result = findDivisors($num);

echo "Divisors of $num: [" . implode(", ", $result) . "]";



/*
run:

Divisors of 24: [1, 2, 3, 4, 6, 8, 12, 24]

*/

 



answered Jul 1, 2020 by avibootz
edited 4 days ago by avibootz
...