目录

2427:公因子的数目(1172 分)

力扣第 313 场周赛第 1 题

题目

给你两个正整数 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

分析

等价于求 a 和 b 的最大公约数 x 的因子数,遍历到 $O(\sqrt x)$ 即可。

解答

1
2
3
4
5
6
7
8
def commonFactors(self, a: int, b: int) -> int:
	x = gcd(a, b)
	res, i = 0, 1
	while i*i<=x:
		if x%i==0:
			res += 1+(i*i!=x)
		i += 1
	return res

36 ms