# Java Program for Common Divisors of Two Numbers

• Last Updated : 09 Sep, 2022

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!

My Personal Notes arrow_drop_up