欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Number With The Given Amount Of Divisors CodeForces - 27E(反素数相关)

程序员文章站 2022-07-15 16:18:28
...

    给出一个n,求因数个数为n的最小正整数x。

    任何一个数 质因数分解之后 x = 2^t1 + 3^t2 + 5^t3 + 7^t4…… 

    求因数的个数为n的数,就是求t1 * t2 * t3 * t4...... = n 的数。

    在满足上述条件的数中找最小的一个就可以了。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    vector<LL>ve;
    LL n,ans;
    void dfs(LL deep , LL temp , LL num_type)
    {
    //    cout << num_type << endl;
        if(num_type > n) return ;
        if(num_type == n && ans > temp) ans = temp;
        for(int i = 1 ; i < 63 ; i++)
        {
            if(ans < temp * ve[deep]) break;
            dfs(deep + 1 , temp *= ve[deep] , num_type*(i+1));
        }
    }
    void get_prime()
    {
        for(int i = 2 ; i < 100 ; i++)
        {
            bool flag = true;
            for(int j = 2 ; j < i ; j++)
            {
                if(i % j == 0)
                {
                    flag = false;
                    break;
                }
            }
            if(flag)
            {
                ve.push_back(i);
            }

        }
    }
    int main()
    {
        get_prime();
        ans = 1e18+10;
        cin >> n;
        dfs(0,1,1);
        cout << ans << endl;
        return 0;
    }

相关标签: 质因子分解