1362.最接近的因数
思路:两数乘积a*b等于num+1或者num+2,说明其中有一个数一定是小于sqrt(num+2),那么我们就从sqrt(num+2)开始遍历,来找到满足两个条件的a、b。时间复杂度0(sqrt(n))
class Solution {
public:
vector<int> closestDivisors(int num) {
int a=1,b=num+1;
for(int i=(int)sqrt(num+2);i>=1;i--){
if((num+1)%i==0){
if(abs((num+1)/i-i)<abs(a-b)){
a=(num+1)/i;
b=i;
}
}
if((num+2)%i==0){
if(abs((num+2)/i-i)<abs(a-b)){
a=(num+2)/i;
b=i;
}
}
}
vector<int> t;
t.push_back(a);
t.push_back(b);
return t;
}
};