Skip to content

Latest commit

 

History

History
127 lines (92 loc) · 2.58 KB

File metadata and controls

127 lines (92 loc) · 2.58 KB

English Version

题目描述

给你两个正整数 ab ,返回 ab 因子的数目。

如果 x 可以同时整除 ab ,则认为 xab 的一个 公因子

 

示例 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

解法

方法一:枚举

直接枚举 $[1, 1000]$ 中的每个数,判断其是否是 $a$$b$ 的公因子,如果是,则答案加一。

时间复杂度 $O(n)$。本题中 $n = 1000$

Python3

class Solution:
    def commonFactors(self, a: int, b: int) -> int:
        return sum(a % i == 0 and b % i == 0 for i in range(1, 1001))

Java

class Solution {
    public int commonFactors(int a, int b) {
        int ans = 0, n = Math.min(a, b);
        for (int i = 1; i <= n; ++i) {
            if (a % i == 0 && b % i == 0) {
                ++ans;
            }
        }
        return ans;
    }
}

C++

class Solution {
public:
    int commonFactors(int a, int b) {
        int ans = 0;
        int n = min(a, b);
        for (int i = 1; i <= n; ++i) {
            if (a % i == 0 && b % i == 0) {
                ++ans;
            }
        }
        return ans;
    }
};

Go

func commonFactors(a int, b int) int {
	ans := 0
	for i := 1; i <= a && i <= b; i++ {
		if a%i == 0 && b%i == 0 {
			ans++
		}
	}
	return ans
}

TypeScript

function commonFactors(a: number, b: number): number {
    const n = Math.min(a, b);
    let ans = 0;
    for (let i = 1; i <= n; i++) {
        if (a % i == 0 && b % i == 0) ans += 1;
    }
    return ans;
}

...