Open In App

PHP Program to Find all factors of a Number

Last Updated : 24 Apr, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Given a Number, the task is to find all factors of the number in PHP. Factors are numbers that divide another number without leaving a remainder. In this article, we will cover all approaches to find all factors of a number using PHP.

Approach 1: All Factors of a Number using a Loop

The simple method is to iterate through all numbers from 1 to N and check if each number divides the given number evenly.

PHP
<?php

function findFactors($num) {
    $factors = [];
    for ($i = 1; $i <= $num; $i++) {
        if ($num % $i == 0) {
            $factors[] = $i;
        }
    }
    return $factors;
}

// Driver Code
$num = 12;
$factors = findFactors($num);
echo "Factors: " .  implode(", ", $factors);

?>

Output
Factors: 1, 2, 3, 4, 6, 12

First, we start from 1 and iterate till the given number N. For each iteration, we check if the current number divides the given number evenly (i.e., the remainder is 0). If it does, we add it to the list of factors.

Approach 2: All Factors of a Number using Square Root Optimization

Since factors come in pairs (except for perfect squares), we only need to iterate up to the square root of the given number.

PHP
<?php

function findFactors($num) {
    $factors = [];
    
    for ($i = 1; $i <= sqrt($num); $i++) {
        if ($num % $i == 0) {
            $factors[] = $i;
            if ($i != $num / $i) {
                $factors[] = $num / $i;
            }
        }
    }
    
    sort($factors);
    return $factors;
}

// Driver Code
$num = 12;
$factors = findFactors($num);
echo "Factors: " .  implode(", ", $factors);

?>

Output

Factors: 1, 2, 3, 4, 6, 12

In this approach, we iterate up to the square root of the given number. For each factor we find, we also add its pair (the result of dividing the number by the factor) to the list of factors.

Approach 3: All Factors of a Number using Recursion

We can also use recursion to find all factors. In recursion, we call the same function again and again to find all factors of number.

PHP
<?php

function findFactors($num, $i = 1, $factors = []) {
    if ($i > sqrt($num)) {
        sort($factors);
        return $factors;
    }

    if ($num % $i == 0) {
        $factors[] = $i;
        if ($i != $num / $i) {
            $factors[] = $num / $i;
        }
    }

    return findFactors($num, $i + 1, $factors);
}

// Driver Code
$num = 12;
$factors = findFactors($num);
echo "Factors: " .  implode(", ", $factors);

?>

Output
Factors: 1, 2, 3, 4, 6, 12

In this approach, the function calls itself recursively, incrementing the divisor until it reaches the square root of the given number.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads