# Find the sum of the number of divisors

• Last Updated : 08 Jun, 2022

Given three integers A, B, C, the task is to find
Î£Ai=1 Î£Bj=1Î£Ck=1 d(i.j.k), where d(x) is the number of divisors of x. Answer can be very large, So, print answer modulo 109+7.
Examples:

```Input: A = 2, B = 2, c = 2
Output: 20
Explanation: d(1.1.1) = d(1) = 1;
d(1Â·1Â·2) = d(2) = 2;
d(1Â·2Â·1) = d(2) = 2;
d(1Â·2Â·2) = d(4) = 3;
d(2Â·1Â·1) = d(2) = 2;
d(2Â·1Â·2) = d(4) = 3;
d(2Â·2Â·1) = d(4) = 3;
d(2Â·2Â·2) = d(8) = 4.

Input: A = 5, B = 6, C = 7
Output: 1520```

Approach:

Below is the implementation of the above approach:

## C++

 `#include ``using` `namespace` `std;` `#define N 100005``#define mod 1000000007` `// To store the number of divisors``int` `cnt[N];` `// Function to find the number of divisors``// of all numbers in  the range 1 to n``void` `Divisors()``{``    ``memset``(cnt, 0, ``sizeof` `cnt);` `    ``// For every number 1 to n``    ``for` `(``int` `i = 1; i < N; i++) {` `        ``// Increase divisors count for every number``        ``for` `(``int` `j = 1; j * i < N; j++)``            ``cnt[i * j]++;``    ``}``}` `// Function to find the sum of divisors``int` `Sumofdivisors(``int` `A, ``int` `B, ``int` `C)``{``    ``// To store sum``    ``int` `sum = 0;` `    ``Divisors();` `    ``for` `(``int` `i = 1; i <= A; i++) {``        ``for` `(``int` `j = 1; j <= B; j++) {``            ``for` `(``int` `k = 1; k <= C; k++) {``                ``int` `x = i * j * k;` `                ``// Count the divisors``                ``sum += cnt[x];``                ``if` `(sum >= mod)``                    ``sum -= mod;``            ``}``        ``}``    ``}` `    ``return` `sum;``}` `// Driver code``int` `main()``{` `    ``int` `A = 5, B = 6, C = 7;` `    ``// Function call``    ``cout << Sumofdivisors(A, B, C);` `    ``return` `0;``}`

## Java

 `// Java code for above given approach``class` `GFG``{` `    ``static` `int` `N = ``100005``;``    ``static` `int` `mod = ``1000000007``;` `    ``// To store the number of divisors``    ``static` `int` `cnt[] = ``new` `int``[N];` `    ``// Function to find the number of divisors``    ``// of all numbers in the range 1 to n``    ``static` `void` `Divisors()``    ``{` `        ``// For every number 1 to n``        ``for` `(``int` `i = ``1``; i < N; i++)``        ``{` `            ``// Increase divisors count for every number``            ``for` `(``int` `j = ``1``; j * i < N; j++)``            ``{``                ``cnt[i * j]++;``            ``}``        ``}``    ``}` `    ``// Function to find the sum of divisors``    ``static` `int` `Sumofdivisors(``int` `A, ``int` `B, ``int` `C)``    ``{``        ``// To store sum``        ``int` `sum = ``0``;` `        ``Divisors();` `        ``for` `(``int` `i = ``1``; i <= A; i++)``        ``{``            ``for` `(``int` `j = ``1``; j <= B; j++)``            ``{``                ``for` `(``int` `k = ``1``; k <= C; k++)``                ``{``                    ``int` `x = i * j * k;` `                    ``// Count the divisors``                    ``sum += cnt[x];``                    ``if` `(sum >= mod)``                    ``{``                        ``sum -= mod;``                    ``}``                ``}``            ``}``        ``}` `        ``return` `sum;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `A = ``5``, B = ``6``, C = ``7``;` `        ``// Function call``        ``System.out.println(Sumofdivisors(A, B, C));``    ``}``}` `/* This code contributed by PrinciRaj1992 */`

## Python3

 `# Python3 code for above given approach``N ``=` `100005``mod ``=` `1000000007` `# To store the number of divisors``cnt ``=` `[``0``] ``*` `N;` `# Function to find the number of divisors``# of all numbers in the range 1 to n``def` `Divisors() :` `    ``# For every number 1 to n``    ``for` `i ``in` `range``(``1``, N) :` `        ``# Increase divisors count``        ``# for every number``        ``for` `j ``in` `range``(``1``, N ``/``/` `i) :``            ``cnt[i ``*` `j] ``+``=` `1``;` `# Function to find the sum of divisors``def` `Sumofdivisors(A, B, C) :``    ` `    ``# To store sum``    ``sum` `=` `0``;` `    ``Divisors();` `    ``for` `i ``in` `range``(``1``,A ``+` `1``) :``        ``for` `j ``in` `range``(``1``, B ``+` `1``) :``            ``for` `k ``in` `range``(``1``, C ``+` `1``) :``                ``x ``=` `i ``*` `j ``*` `k;``                ` `                ``# Count the divisors``                ``sum` `+``=` `cnt[x];``                ``if` `(``sum` `>``=` `mod) :``                    ``sum` `-``=` `mod;` `    ``return` `sum``;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``A ``=` `5``; B ``=` `6``; C ``=` `7``;` `    ``# Function call``    ``print``(Sumofdivisors(A, B, C));` `# This code is contributed by Ryuga`

## C#

 `// C# code for above given approach``using` `System;``    ` `class` `GFG``{` `    ``static` `int` `N = 100005;``    ``static` `int` `mod = 1000000007;` `    ``// To store the number of divisors``    ``static` `int` `[]cnt = ``new` `int``[N];` `    ``// Function to find the number of divisors``    ``// of all numbers in the range 1 to n``    ``static` `void` `Divisors()``    ``{` `        ``// For every number 1 to n``        ``for` `(``int` `i = 1; i < N; i++)``        ``{` `            ``// Increase divisors count for every number``            ``for` `(``int` `j = 1; j * i < N; j++)``            ``{``                ``cnt[i * j]++;``            ``}``        ``}``    ``}` `    ``// Function to find the sum of divisors``    ``static` `int` `Sumofdivisors(``int` `A, ``int` `B, ``int` `C)``    ``{``        ``// To store sum``        ``int` `sum = 0;` `        ``Divisors();` `        ``for` `(``int` `i = 1; i <= A; i++)``        ``{``            ``for` `(``int` `j = 1; j <= B; j++)``            ``{``                ``for` `(``int` `k = 1; k <= C; k++)``                ``{``                    ``int` `x = i * j * k;` `                    ``// Count the divisors``                    ``sum += cnt[x];``                    ``if` `(sum >= mod)``                    ``{``                        ``sum -= mod;``                    ``}``                ``}``            ``}``        ``}` `        ``return` `sum;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``int` `A = 5, B = 6, C = 7;` `        ``// Function call``        ``Console.WriteLine(Sumofdivisors(A, B, C));``    ``}``}` `// This code contributed by Rajput-Ji`

## Javascript

 ``

Output:

`1520`

Time Complexity: O((A * B * C) + N3/2)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up