给定整数N。任务是找到[1,N]范围内所有数字的除数。
例子:
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
方法:创建大小的数组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