1. class Solution {
    2. public:
    3. vector<int> closestDivisors(int num) {
    4. vector<vector<int>> res;
    5. long long v = sqrt(num + 2);
    6. int num1 = num + 1;
    7. int num2 = num + 2;
    8. // cout << v << endl;
    9. for(int i = v; i > 0 && !res.size(); i--)
    10. {
    11. if(num1 % i == 0)
    12. {
    13. res.push_back({i, num1/i});
    14. }
    15. if(num2 % i == 0)
    16. {
    17. res.push_back({i, num2/i});
    18. }
    19. }
    20. return res[0];
    21. }
    22. };

    简洁代码

    1. class Solution {
    2. public:
    3. vector<int> closestDivisors(int num) {
    4. long long v = sqrt(num + 2);
    5. int num1 = num + 1;
    6. int num2 = num + 2;
    7. for(int i = v; i > 0; i--)
    8. {
    9. if(num1 % i == 0) return {i, num1/i};
    10. if(num2 % i == 0) return {i, num2/i};
    11. }
    12. return {0, 0};
    13. }
    14. };