题目描述
源码解析
class Solution {
public:
vector<int> closestDivisors(int num) {
vector<int> arr(2);
int sub=-1; //记录两数的绝对差
for(int n=num+1;n<=num+2;n++)
{
for(int i=(int)sqrt(n);i>=1;--i)//从平方根开始,能最快找到最小绝对差
{
if(n%i!=0) continue;//不能整除,进行下一次循环
if(sub==-1||abs(i-n/i)<sub)
{
arr[0]=i;
arr[1]=n/i;
sub=abs(arr[0]-arr[1]);
continue;
}
}
}
return arr;
}
};