原题链接:https://leetcode.cn/problems/number-of-common-factors/
2427. 公因子的数目
给你两个正整数 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
c++
class Solution {
public:
int commonFactors(int a, int b) {
int l = min(a, b);
int ret = 1;
for (int i = 2; i <= l; i++){
if (isPrime(i)) {
ret *= min(numOfFactor(a, i), numOfFactor(b, i))+1;
}
}
return ret;
}
bool isPrime(int n) {
for (int i = 2; i * i <= n; i++) {
if (n%i == 0) {
return false;
}
}
return true;
}
int min(int a, int b) {
if (a < b) {
return a;
}
return b;
}
int numOfFactor(int n, int f) {
int ret = 0;
while (n%f == 0) {
ret++;
n = n/f;
}
return ret;
}
};
goalng
func commonFactors(a int, b int) int {
l := min(a, b)
ret := 1
for i := 2; i <= l; i++ {
if isPrime(i) {
ret *= min(numOfFactor(a, i), numOfFactor(b, i)) + 1
}
}
return ret
}
func isPrime(a int) bool {
for i := 2; i * i <= a; i++ {
if a%i == 0{
return false
}
}
return true
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
func numOfFactor(n, f int) int{
ret := 0
for n%f == 0 {
ret++
n = n/f
}
return ret
}