题目
给你两个正整数 a
和 b
,返回 a
和 b
的 公 因子的数目。
如果 x
可以同时整除 a
和 b
,则认为 x
是 a
和 b
的一个 公因子 。
示例 1:
输入:a = 12, b = 6
输出:4
解释:12 和 6 的公因子是 1、2、3、6 。
示例 2:
输入:a = 25, b = 30
输出:2
解释:25 和 30 的公因子是 1、5 。
提示:
1 <= a, b <= 1000
解题
方法一:暴力枚举
思路
从 枚举每一个数,如果是 的公因子就增加计数(cnt
)。
代码
class Solution {
public int commonFactors(int a, int b) {
int cnt = 0;
for (int i = 1; i <= Math.min(a, b); ++i) {
if (a % i == 0 && b % i == 0) ++cnt;
}
return cnt;
}
}
优化
其实从 枚举到 的最大公因数()就可以了。
class Solution {
public:
int commonFactors(int a, int b) {
int cnt = 0;
for (int i = 1; i <= __gcd(a, b); ++i) {
if (a % i == 0 && b % i == 0) ++cnt;
}
return cnt;
}
};
评论区