**Problem Statement: **Find all factors of a number or find all distinct divisors of a natural number.

**Examples:**

Example 1:Input:n = 6Output:1,2,3,6Explanation:6 is divisible by 1,2,3,6Example 2:Input:n = 9Output:1,3,9Explanation:9 is divisible by 1,3,9

**Solution**

* Disclaimer*:

*Don’t jump directly to the solution, try it out yourself first.*

**Solution1: Brute force**

**Intuition: **We can simply use a for loop from 1 to n and check for every element that n is divisible by it or not, if it is then we will print it otherwise just skip it.

**Approach: **

- Use a for loop from 1 to n.
- If n is divisible by any element of the loop then print it.
- Otherwise skip it.

**Code:**

## C++ Code

```
#include <iostream>
using namespace std;
void Divisor(int n)
{
for (int i = 1; i <= n; i++)
if (n % i == 0)
cout <<" " << i;
}
int main()
{ int n = 6;
cout <<"Factors of "<<n<<" are: ";
Divisor(n);
return 0;
}
```

**Output:** Factors of 6 are: 1 2 3 6

**Time Complexity:** O(N)

**Space Complexity: **O(1)

## Java Code

```
import java.util.*;
public class tuf {
static void Divisor(int n)
{
for (int i=1;i<=n;i++)
if (n%i==0)
System.out.print(i+" ");
}
public static void main(String args[])
{ int n = 6;
System.out.print("Factors of " + n + " are: ");
Divisor(n);
}
}
```

**Output:** Factors of 6 are: 1 2 3 6

**Time Complexity:** O(N)

**Space Complexity: **O(1)

**Solution2: Optimised approach**

**Intuition: **When we thoroughly see the factors of a natural number, they always lie in pairs. For if ‘n’ is divisible by any number ‘i’ then it will also be divisible by its quotient of n/i.

**Approach:**

- Run a for loop from 1 to SquareRoot of n.
- If n is divisible by any number i then the quotient of n/i is also divisible by n, print both i and n/i.
- Take care of the edge case when n/i=i, print only i one time, to remove duplicates.

**Code:**

## C++ Code

```
#include <bits/stdc++.h>
using namespace std;
void Divisor(int n)
{
for (int i=1; i<=sqrt(n); i++)
{
if (n%i == 0)
{
// If divisors are equal, print only one
if (n/i == i)
cout <<" "<< i;
else // Otherwise print both
cout << " "<< i << " " << n/i;
}
}
}
int main()
{ int n = 14;
cout <<"Factors of "<<n<<" are: ";
Divisor(n);
return 0;
}
```

**Output: **Factors of 14 are: 1 14 2 7

**Time Complexity:** O(sqrt(N))

**Space Complexity: **O(1)

## Java Code

```
import java.util.*;
public class tuf {
static void Divisor(int n)
{
for (int i=1;i<=Math.sqrt(n); i++)
{
if (n%i==0)
{
// If divisors are equal, print only one
if (n/i == i)
System.out.print(" "+ i);
else // Otherwise print both
System.out.print(i+" " + n/i + " " );
}
}
}
public static void main(String args[])
{ int n = 14;
System.out.print("Factors of " + n + " are: ");
Divisor(n);;
}
}
```

**Output: **Factors of 14 are: 1 14 2 7

**Time Complexity:** O(sqrt(N))

**Space Complexity: **O(1)

Special thanks toplease check out this articlePrashant Sahufor contributing to this article on takeUforward. If you also wish to share your knowledge with the takeUforward fam,