DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Closest Divisors

Given an integer num, find the closest two integers in absolute difference whose product equals num + 1 or num + 2.

Return the two integers in any order.

Example 1:

Input: num = 8
Output: [3,3]
Explanation: For num + 1 = 9, the closest divisors are 3 & 3, for num + 2 = 10, the closest divisors are 2 & 5, hence 3 & 3 is chosen.

Example 2:

Input: num = 123
Output: [5,25]

Example 3:

Input: num = 999
Output: [40,25]

Constraints:

  • 1 <= num <= 10^9

SOLUTION:

class Solution:
    def closestDivisors(self, num: int) -> List[int]:
        closest = (1, num + 1)
        for x in [num + 1, num + 2]:
            curr = (1, x)
            i = 2
            while i * i <= x:
                if x % i == 0:
                    curr = (i, x // i)
                    if curr[1] - curr[0] < closest[1] - closest[0]:
                        closest = curr
                i += 1
        return closest
Enter fullscreen mode Exit fullscreen mode

Top comments (0)