js版
var closestDivisors = function (num) {
const r1 = num + 1;
const m1 = ~~Math.sqrt(r1);
const r2 = num + 2;
const m2 = ~~Math.sqrt(r2);
if (m1 * m1 === r1) {
return [m1, m1];
}
if (m2 * m2 === r2) {
return [m2, m2];
}
let res = [];
for (let a = 1; a <= m1; a++) {
if (r1 % a === 0) {
if (res.length) {
if (Math.abs(a - r1 / a) < Math.abs(res[0] - res[1])) {
res = [a, r1 / a]
}
} else {
res = [a, r1 / a];
}
}
}
for (let b = 1; b <= m2; b++) {
if (r2 % b === 0) {
if (res.length) {
if (Math.abs(b - r2 / b) < Math.abs(res[0] - res[1])) {
res = [b, r2/ b]
}
} else {
res = [b, r2 / b];
}
}
}
return res;
};