LeetCode 2427. Number of Common Factors Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
2427. Number of Common Factors

Description

Given two positive integers a and b, return the number of common factors of a and b.

An integer x is a common factor of a and b if x divides both a and b.

 

Example 1:

Input: a = 12, b = 6
Output: 4
Explanation: The common factors of 12 and 6 are 1, 2, 3, 6.

Example 2:

Input: a = 25, b = 30
Output: 2
Explanation: The common factors of 25 and 30 are 1, 5.

 

Constraints:

  • 1 <= a, b <= 1000

Solutions

Solution 1: Enumeration

We can first calculate the greatest common divisor g of a and b, then enumerate each number in [1,..g], check whether it is a factor of g, if it is, then increment the answer by one.

The time complexity is O(min(a, b)), and the space complexity is O(1).

PythonJavaC++GoTypeScript
class Solution: def commonFactors(self, a: int, b: int) -> int: g = gcd(a, b) return sum(g % x == 0 for x in range(1, g + 1))(code-box)

Solution 2: Optimized Enumeration

Similar to Solution 1, we can first calculate the greatest common divisor g of a and b, then enumerate all factors of the greatest common divisor g, and accumulate the answer.

The time complexity is O(√min(a, b)), and the space complexity is O(1).

PythonJavaC++GoTypeScript
class Solution: def commonFactors(self, a: int, b: int) -> int: g = gcd(a, b) ans, x = 0, 1 while x * x <= g: if g % x == 0: ans += 1 ans += x * x < g x += 1 return ans(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !