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
Related Topics:
Math, Enumeration, Number Theory
Similar Questions:
// OJ: https://leetcode.com/problems/number-of-common-factors
// Author: github.com/lzl124631x
// Time: O(Sqrt(Gcd(a, b)))
// Space: O(1)
class Solution {
public:
int commonFactors(int a, int b) {
int n = gcd(a, b), ans = n == 1 ? 1 : 2;
for (int i = 2; i * i <= n; ++i) {
if (n % i) continue;
++ans;
if (i != n / i) ++ans;
}
return ans;
}
};