# Find the number of divisors of all numbers in the range [1, n]

• Difficulty Level : Medium
• Last Updated : 08 Jun, 2022

Given an integer N. The task is to find the number of divisors of all the numbers in the range [1, N]

Examples:

Input: N = 5
Output: 1 2 2 3 2
divisors(1) = 1
divisors(2) = 1 and 2
divisors(3) = 1 and 3
divisors(4) = 1, 2 and 4
divisors(5) = 1 and 5

Input: N = 10
Output: 1 2 2 3 2 4 2 4 3 4

Approach: Create an array arr[] of the size (N + 1) where arr[i] stores the number of divisors of i. Now for every j from the range [1, N], increment all the elements which are divisible by j
For example, if j = 3 then update arr, arr, arr, …

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to find the number of divisors``// of all numbers in the range [1, n]``void` `findDivisors(``int` `n)``{` `    ``// Array to store the count``    ``// of divisors``    ``int` `div``[n + 1];``    ``memset``(``div``, 0, ``sizeof` `div``);` `    ``// For every number from 1 to n``    ``for` `(``int` `i = 1; i <= n; i++) {` `        ``// Increase divisors count for``        ``// every number divisible by i``        ``for` `(``int` `j = 1; j * i <= n; j++)``            ``div``[i * j]++;``    ``}` `    ``// Print the divisors``    ``for` `(``int` `i = 1; i <= n; i++)``        ``cout << ``div``[i] << ``" "``;``}` `// Driver code``int` `main()``{``    ``int` `n = 10;``    ``findDivisors(n);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach` `class` `GFG``{``    ` `    ``// Function to find the number of divisors``    ``// of all numbers in the range [1, n]``    ``static` `void` `findDivisors(``int` `n)``    ``{``    ` `        ``// Array to store the count``        ``// of divisors``        ``int``[] div = ``new` `int``[n + ``1``];``    ` `        ``// For every number from 1 to n``        ``for` `(``int` `i = ``1``; i <= n; i++)``        ``{``    ` `            ``// Increase divisors count for``            ``// every number divisible by i``            ``for` `(``int` `j = ``1``; j * i <= n; j++)``                ``div[i * j]++;``        ``}``    ` `        ``// Print the divisors``        ``for` `(``int` `i = ``1``; i <= n; i++)``            ``System.out.print(div[i]+``" "``);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``10``;``        ``findDivisors(n);``    ``}``}` `// This code is contributed by Ryuga`

## Python3

 `# Python3 implementation of the approach``# Function to find the number of divisors``# of all numbers in the range [1,n]``def` `findDivisors(n):``    ` `    ``# List to store the count``    ``# of divisors``    ``div ``=` `[``0` `for` `i ``in` `range``(n ``+` `1``)]``    ` `    ``# For every number from 1 to n``    ``for` `i ``in` `range``(``1``, n ``+` `1``):``        ` `        ``# Increase divisors count for``        ``# every number divisible by i``        ``for` `j ``in` `range``(``1``, n ``+` `1``):``            ``if` `j ``*` `i <``=` `n:``                ``div[i ``*` `j] ``+``=` `1` `    ``# Print the divisors``    ``for` `i ``in` `range``(``1``, n ``+` `1``):``        ``print``(div[i], end ``=` `" "``)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``n ``=` `10``    ``findDivisors(n)` `# This code is contributed by``# Vivek Kumar Singh`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ` `// Function to find the number of divisors``// of all numbers in the range [1, n]``static` `void` `findDivisors(``int` `n)``{` `    ``// Array to store the count``    ``// of divisors``    ``int``[] div = ``new` `int``[n + 1];` `    ``// For every number from 1 to n``    ``for` `(``int` `i = 1; i <= n; i++)``    ``{` `        ``// Increase divisors count for``        ``// every number divisible by i``        ``for` `(``int` `j = 1; j * i <= n; j++)``            ``div[i * j]++;``    ``}` `    ``// Print the divisors``    ``for` `(``int` `i = 1; i <= n; i++)``        ``Console.Write(div[i]+``" "``);``}` `// Driver code``static` `void` `Main()``{``    ``int` `n = 10;``    ``findDivisors(n);``}``}` `// This code is contributed by mits`

## PHP

 ``

## Javascript

 ``

Output:

`1 2 2 3 2 4 2 4 3 4`

Time Complexity: O(n3/2)
Auxiliary Space: O(n)

My Personal Notes arrow_drop_up