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

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[3], arr[6], arr[9], …

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)

Previous
Next