<?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]
*/