Problem
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
Solution (Java)
class Solution {
public int commonFactors(int a, int b) {
int s = 0;
for(int i = 2; i <= Math.min(a, b)/2+1; i++){
if(a % i == 0 && b % i == 0){
++s;
}
}
if(a == 1 || b == 1){
return 1;
}
return a == b/2 || b == a/2 || a == b ? s+2:s+1;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).