题目描述:
给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。
如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。
初始代码:
class Solution {
public int commonFactors(int a, int b) {
}
}
示例1:
输入:a = 12, b = 6 输出:4 解释:12 和 6 的公因子是 1、2、3、6 。
示例2:
输入:a = 25, b = 30 输出:2 解释:25 和 30 的公因子是 1、5 。
参考答案:
//需要将a与b都遍历一次 并且创建了Set集合 时间、空间复杂度较高
class Solution {
public int commonFactors(int a, int b) {
int count = 0;
Set<Integer> set = new HashSet<>();
for(int i = 1;i <= a;++i){
if(a % i == 0) set.add(i);
}
for(int i = 1;i <= b;++i){
if(b % i == 0 && !set.add(i)) count++;
}
return count;
}
}
//对a与b其中一个最小值遍历一次即可 优化了时间、空间复杂度
class Solution {
public int commonFactors(int a, int b) {
int count = 0;
int min = Math.min(a,b);
for(int i = 1;i <= min;++i){
if(a % i == 0 && b % i == 0) count++;
}
return count;
}
}