# Java Program for Common Divisors of Two Numbers

Given two integer numbers, the task is to find the count of all common divisors of given numbers?

Input : a = 12, b = 24 Output: 6 // all common divisors are 1, 2, 3, // 4, 6 and 12 Input : a = 3, b = 17 Output: 1 // all common divisors are 1 Input : a = 20, b = 36 Output: 3 // all common divisors are 1, 2, 4

## Java

`// Java implementation of program` `class` `Test {` ` ` `// method to calculate gcd of two numbers` ` ` `static` `int` `gcd(` `int` `a, ` `int` `b)` ` ` `{` ` ` `if` `(a == ` `0` `)` ` ` `return` `b;` ` ` `return` `gcd(b % a, a);` ` ` `}` ` ` `// method to calculate all common divisors` ` ` `// of two given numbers` ` ` `// a, b --> input integer numbers` ` ` `static` `int` `commDiv(` `int` `a, ` `int` `b)` ` ` `{` ` ` `// find gcd of a, b` ` ` `int` `n = gcd(a, b);` ` ` `// Count divisors of n.` ` ` `int` `result = ` `0` `;` ` ` `for` `(` `int` `i = ` `1` `; i <= Math.sqrt(n); i++) {` ` ` `// if 'i' is factor of n` ` ` `if` `(n % i == ` `0` `) {` ` ` `// check if divisors are equal` ` ` `if` `(n / i == i)` ` ` `result += ` `1` `;` ` ` `else` ` ` `result += ` `2` `;` ` ` `}` ` ` `}` ` ` `return` `result;` ` ` `}` ` ` `// Driver method` ` ` `public` `static` `void` `main(String args[])` ` ` `{` ` ` `int` `a = ` `12` `, b = ` `24` `;` ` ` `System.out.println(commDiv(a, b));` ` ` `}` `}` |

**Output:**

6

**Time complexity**: O(sqrt(n)) because for loop will run for sqrt(n) times and function to calculate gcd will take O(log(min(a,b))

**Auxiliary Space: **O(log(min(a,b)) due to recursive stack space

Please refer complete article on Common Divisors of Two Numbers for more details!