zl程序教程

您现在的位置是:首页 >  Java

当前栏目

因子分解和枚举(一)

2023-02-18 16:26:26 时间

今天有难题,所以我分了俩个来写,第一篇水题,发车了…… 返回n的第k个质数 题目中有一个说是排序,但是你for循环后已经是排好序的了,所以说很水的一题,不要相的太难了,请彦祖们看代码

class Solution {
public:
    int kthFactor(int n, int k) {
       int count=0;
        for(int i=1;i<=n;++i)
        {
            if(n%i==0)
            {
                ++count;
                if(count==k)
                    return i;
            }
        }
        return -1;
    }
};

求俩个最接近的因数

class Solution {
    vector<int> ans;
public:
    void divide(int n) {
        for (int i = int(sqrt(n)); i != 0; --i)//计算开方后的,降低时间复杂度
            if (n % i == 0)
                if (abs(n / i - i) < abs(ans[0] - ans[1])) {
                    ans[0] = n / i;
                    ans[1] = i;
                }
    }
    vector<int> closestDivisors(int num) {
        ans.push_back(0);
        ans.push_back(1e9);
        divide(num + 1);
        divide(num + 2);
        return ans;
    }
};