# All possible values of floor(N/K) for all values of K

Given a function f(K) = floor(N/K) (N>0 and K>0), the task is to find all possible values of f(K) for a given N where K takes all values in the range [1, Inf].
Examples:

Input: N = 5
Output: 0 1 2 5
Explanation:
5 divide 1 = 5
5 divide 2 = 2
5 divide 3 = 1
5 divide 4 = 1
5 divide 5 = 1
5 divide 6 = 0
5 divide 7 = 0
So all possible distinct values of f(k) are {0, 1, 2, 5}.
Input: N = 11
Output: 0 1 2 3 5 11
Explanation:
11 divide 1 = 11
11 divide 2 = 5
11 divide 3 = 3
11 divide 4 = 2
11 divide 5 = 2
11 divide 6 = 1
11 divide 7 = 1
…
…
11 divided 11 = 1
11 divides 12 = 0
So all possible distinct values of f(k) are {0, 1, 2, 3, 5, 11}.

Naive Approach:
The simplest approach to the iterate over [1, N+1] and store in a set, all values of (N/i) ( 1 ? i ? N + 1) to avoid duplication.
Below is the implementation of the above approach:

## C++

 `// C++ Program for the  ` `// above approach  ` `#include   ` `using` `namespace` `std;  ` ` `  `// Function to print all  ` `// possible values of  ` `// floor(N/K)  ` `void` `allQuotients(``int` `N)  ` `{  ` `    ``set<``int``> s;  ` ` `  `    ``// loop from 1 to N+1  ` `    ``for` `(``int` `k = 1; k <= N + 1; k++) {  ` `        ``s.insert(N / k);  ` `    ``}  ` ` `  `    ``for` `(``auto` `it : s)  ` `        ``cout << it << ``" "``;  ` `}  ` ` `  `int` `main()  ` `{  ` `    ``int` `N = 5;  ` `    ``allQuotients(N);  ` ` `  `    ``return` `0;  ` `}  `

## Java

 `// Java program for the above approach  ` `import` `java.util.*;  ` ` `  `class` `GFG{  ` ` `  `// Function to print all  ` `// possible values of  ` `// Math.floor(N/K)  ` `static` `void` `allQuotients(``int` `N)  ` `{  ` `    ``HashSet s = ``new` `HashSet();  ` ` `  `    ``// loop from 1 to N+1  ` `    ``for``(``int` `k = ``1``; k <= N + ``1``; k++)  ` `    ``{  ` `        ``s.add(N / k);  ` `    ``}  ` `     `  `    ``for``(``int` `it : s)  ` `        ``System.out.print(it + ``" "``);  ` `}  ` ` `  `// Driver code  ` `public` `static` `void` `main(String[] args)  ` `{  ` `    ``int` `N = ``5``;  ` `     `  `    ``allQuotients(N);  ` `}  ` `}  ` ` `  `// This code is contributed by Rajput-Ji  `

## Python3

 `# Python3 program for the above approach ` ` `  `# Function to print all possible  ` `# values of floor(N/K) ` `def` `allQuotients(N): ` ` `  `    ``s ``=` `set``() ` ` `  `    ``# Iterate from 1 to N+1 ` `    ``for` `k ``in` `range``(``1``, N ``+` `2``): ` `        ``s.add(N ``/``/` `k) ` ` `  `    ``for` `it ``in` `s: ` `        ``print``(it, end ``=` `' '``) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` ` `  `    ``N ``=` `5` `     `  `    ``allQuotients(N) ` ` `  `# This code is contributed by himanshu77 `

## C#

 `// C# program for the above approach ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG{ ` `     `  `// Function to print all possible ` `// values of Math.floor(N/K)  ` `static` `void` `allQuotients(``int` `N)  ` `{  ` `    ``SortedSet<``int``> s = ``new` `SortedSet<``int``>();  ` `     `  `    ``// Loop from 1 to N+1  ` `    ``for``(``int` `k = 1; k <= N + 1; k++)  ` `    ``{  ` `        ``s.Add(N / k);  ` `    ``}  ` `     `  `    ``foreach``(``int` `it ``in` `s)  ` `    ``{  ` `        ``Console.Write(it + ``" "``);  ` `    ``} ` `}  ` ` `  `// Driver code ` `static` `void` `Main() ` `{ ` `    ``int` `N = 5;  ` `     `  `    ``allQuotients(N); ` `} ` `} ` ` `  `// This code is contributed by divyeshrabadiya07 `

Output:

```0 1 2 5

```

Time Complexity: O(N)
Auxiliary Space: O(N)
Efficient Approach:
An optimized solution is to iterate over [1, ?N] and insert values K and (N/K) into the set.

## C++

 `// C++ Program for the  ` `// above approach  ` `#include   ` `using` `namespace` `std;  ` ` `  `// Function to print all  ` `// possible values of  ` `// floor(N/K)  ` `void` `allQuotients(``int` `N)  ` `{  ` `    ``set<``int``> s;  ` `    ``s.insert(0);  ` ` `  `    ``for` `(``int` `k = 1; k <= ``sqrt``(N); k++) {  ` `        ``s.insert(k);  ` `        ``s.insert(N / k);  ` `    ``}  ` ` `  `    ``for` `(``auto` `it : s)  ` `        ``cout << it << ``" "``;  ` `}  ` ` `  `int` `main()  ` `{  ` `    ``int` `N = 5;  ` `    ``allQuotients(N);  ` ` `  `    ``return` `0;  ` `}  `

## Java

 `// Java program for the above approach  ` `import` `java.util.*;  ` `class` `GFG{  ` ` `  `// Function to print all  ` `// possible values of  ` `// Math.floor(N/K)  ` `static` `void` `allQuotients(``int` `N)  ` `{  ` `    ``HashSet s = ``new` `HashSet();  ` `    ``s.add(``0``);  ` `     `  `    ``// loop from 1 to N+1  ` `    ``for``(``int` `k = ``1``; k <= Math.sqrt(N); k++)  ` `    ``{  ` `        ``s.add(k);  ` `        ``s.add(N / k);  ` `    ``}  ` `     `  `    ``for``(``int` `it : s)  ` `        ``System.out.print(it + ``" "``);  ` `}  ` ` `  `// Driver code  ` `public` `static` `void` `main(String[] args)  ` `{  ` `    ``int` `N = ``5``;  ` `     `  `    ``allQuotients(N);  ` `}  ` `}  ` ` `  `// This code is contributed by rock_cool  `

## Python3

 `# Python3 program for the above approach ` `from` `math ``import` `*` ` `  `# Function to print all possible  ` `# values of floor(N/K) ` `def` `allQuotients(N): ` ` `  `    ``s ``=` `set``() ` `    ``s.add(``0``) ` ` `  `    ``for` `k ``in` `range``(``1``, ``int``(sqrt(N)) ``+` `1``): ` `        ``s.add(k) ` `        ``s.add(N ``/``/` `k) ` ` `  `    ``for` `it ``in` `s: ` `        ``print``(it, end ``=` `' '``) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` ` `  `    ``N ``=` `5` `     `  `    ``allQuotients(N) ` ` `  `# This code is contributed by himanshu77 `

## C#

 `// C# program for the above approach ` `using` `System; ` `using` `System.Collections.Generic; ` ` `  `class` `GFG{ ` `     `  `// Function to print all possible ` `// values of Math.floor(N/K)  ` `static` `void` `allQuotients(``int` `N)  ` `{  ` `    ``SortedSet<``int``> s = ``new` `SortedSet<``int``>();  ` `    ``s.Add(0);  ` `     `  `    ``// loop from 1 to N+1  ` `    ``for``(``int` `k = 1; k <= Math.Sqrt(N); k++)  ` `    ``{  ` `        ``s.Add(k); ` `        ``s.Add(N / k);  ` `    ``}  ` `     `  `    ``foreach``(``int` `it ``in` `s)  ` `    ``{  ` `        ``Console.Write(it + ``" "``);  ` `    ``} ` `}  ` ` `  `// Driver code     ` `static` `void` `Main()  ` `{ ` `    ``int` `N = 5;  ` `     `  `    ``allQuotients(N); ` `} ` `} ` ` `  `// This code is contributed by divyeshrabadiya07 `

Output:

```0 1 2 5
```

Time Complexity: O(?N)
Auxiliary Space: O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.