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

Comments

Popular posts from this blog

Encrypt and Decrypt Strings

Degree of an Array

Minimum Sum of Four Digit Number After Splitting Digits