Given two positive integers a and b, return the number of common factors of a and b.
An integer x is a common factor of a and b if x divides both a and b.
Example 1:
Input: a = 12, b = 6
Output: 4
Explanation: The common factors of 12 and 6 are 1, 2, 3, 6.
Example 2:
Input: a = 25, b = 30
Output: 2
Explanation: The common factors of 25 and 30 are 1, 5.
Constraints:
1 <= a, b <= 1000
Solutions
Solution 1: Enumeration
We can first calculate the greatest common divisor \(g\) of \(a\) and \(b\), then enumerate each number in \([1,..g]\), check whether it is a factor of \(g\), if it is, then increment the answer by one.
The time complexity is \(O(\min(a, b))\), and the space complexity is \(O(1)\).
Similar to Solution 1, we can first calculate the greatest common divisor \(g\) of \(a\) and \(b\), then enumerate all factors of the greatest common divisor \(g\), and accumulate the answer.
The time complexity is \(O(\sqrt{\min(a, b)})\), and the space complexity is \(O(1)\).