如果给出因子数(N)和素数因子(K),如何计算数字?

问题描述 投票:0回答:1

例如,如果给出N = 4K = 2,则可能的值为6说明:上面的解释是6具有4因子1,2,3,6,其中2是质数2,3。因此可能的值之一是6。

//X is the number of factors ans K is the number of primefactors
    int X, K;
    cin >> X >> K;
    //K is the sum of the pime numbers
    int sumofprimes = 1;
    for(int i = 0; i < K; i++) {
        sumofprimes *= (1+1);
    }
    if(X==sumofprimes) {
        //printing 1 if the number exist
        cout << 1 << "\n";
    }else {
        //printing 0 if it does not exist
        cout << 0 << "\n";
    }

请看一下代码。

math numbers primes prime-factoring number-theory
1个回答
0
投票

任何整数都可以表示为素数的乘积:

I = 2^p1 * 3^p2 * 5^p3 * 7^p4 * 11^p5 * ....

其所有因素的总数是

N = (p1+1) * (p2+1) * (p3+1) * ....
     \__________________________/ 
            K multipliers

因此您需要将N值表示为K因子大于1的乘积。

例如,具有N = 12K=3,则可以表示12 = 2 * 2 * 3,并使用任意两个素数与第三个素数的平方的乘积作为数字I。最小的值是60 (2^2 * 3 * 5),下一个是90 (2 * 3^2 * 5),依此类推(例如,3 * 7 * 11^2也是一个解)。

对于N = 12K=2,您可以表示12 = 3 * 4,并以p^2*q^312 = 2 * 6的形式得到结果,并以p*q^5的形式得到结果,其中p,q是不同的质数

对于N = 12K=4,您不能将12表示为大于1的四个整数的乘积,因此无法使用这些参数产生结果

© www.soinside.com 2019 - 2024. All rights reserved.