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 5Input: 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 <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
// 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 Codeif __name__ == "__main__": n = 10 findDivisors(n)# This code is contributed by# Vivek Kumar Singh |
C#
// 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// 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?> |
Javascript
<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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
