Closest Divisors
Description
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(javascript)
/**
* @param {number} num
* @return {number[]}
*/
const closestDivisors = function (num) {
const diff = (x) => {
let right = Math.floor(Math.sqrt(x))
while (right >= 1) {
const divisor = Math.floor(x / right)
if (right * divisor === x) {
return [divisor, right]
}
right--
}
return [1, x]
}
const [a, b] = diff(num + 1)
const [c, d] = diff(num + 2)
return Math.abs(b - a) <= Math.abs(c - d) ? [a, b] : [c, d]
}