📜  求出[1,n]范围内所有数字的除数

📅  最后修改于: 2021-04-29 15:57:48             🧑  作者: Mango

给定整数N。任务是找到[1,N]范围内所有数字的除数。

例子:

方法:创建大小的数组ARR [](N + 1),其中ARR [I]存储的除数的数量。现在,对于范围[1,N]中的每个j ,增加所有可被j整除的元素。
例如,如果j = 3,则更新arr [3],arr [6],arr [9],…

下面是上述方法的实现:

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


输出:
1 2 2 3 2 4 2 4 3 4