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

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++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>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 codeint main(){    int n = 10;    findDivisors(n);     return 0;}
// 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 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 Codeif __name__ == "__main__":    n = 10    findDivisors(n) # This code is contributed by# Vivek Kumar Singh
// C# implementation of the approachusing 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 codestatic void Main(){    int n = 10;    findDivisors(n);}} // This code is contributed by mits
<?php// PHP implementation of the approach // Function to find the number of divisors// of all numbers in the range [1, n]function findDivisors($n){     // Array to store the count    // of divisors    $div = array_fill(0, $n + 2, 0);         // For every number from 1 to n    for ($i = 1; $i <= $n; $i++)    {         // Increase divisors count for        // every number divisible by i        for ($j = 1; $j * $i <= $n; $j++)            $div[$i * $j]++;    }     // Print the divisors    for ($i = 1; $i <= $n; $i++)        echo $div[$i], " ";} // Driver code$n = 10;findDivisors($n); // This code is contributed// by Arnab Kundu?>
<script> // Javascript implementation of the approach // Function to find the number of divisors// of all numbers in the range [1, n]function findDivisors(n){     // Array to store the count    // of divisors    let div = new Array(n + 1).fill(0);     // For every number from 1 to n    for(let i = 1; i <= n; i++)    {                 // Increase divisors count for        // every number divisible by i        for(let j = 1; j * i <= n; j++)            div[i * j]++;    }     // Print the divisors    for(let i = 1; i <= n; i++)        document.write(div[i] + " ");} // Driver codelet n = 10;findDivisors(n); // This code is contributed by souravmahato348 </script>
1 2 2 3 2 4 2 4 3 4
 
Time Complexity: O(n3/2)Auxiliary Space: O(n)
Mithun Kumar
ankthon
andrew1234
Vivekkumar Singh
souravmahato348
rishavnitro
Competitive Programming
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.