Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;确定K是否可以表示为N的素数因子之和_C++_Algorithm - Fatal编程技术网

C++ C++;确定K是否可以表示为N的素数因子之和

C++ C++;确定K是否可以表示为N的素数因子之和,c++,algorithm,C++,Algorithm,因此,我正在编写一个程序来解决这个问题,而我的算法的某个特定部分遇到了问题。我需要取两个整数变量N和K,并确定K是否可以表示为N的素数因子之和 例如,N=21,K=6:21的素数因子是3x7。6可以表示为3+3,所以这是真的。 另一个例子是N=21,K=11。11不能表示为3或7的任何组合,因此为假 在我的程序中,我迄今为止解决这个问题的最好办法是使用以下代码找到N的素因子,然后将值存储到向量中: vector<int> PrimeFactors(int n) { vecto

因此,我正在编写一个程序来解决这个问题,而我的算法的某个特定部分遇到了问题。我需要取两个整数变量N和K,并确定K是否可以表示为N的素数因子之和

例如,N=21,K=6:21的素数因子是3x7。6可以表示为3+3,所以这是真的。 另一个例子是N=21,K=11。11不能表示为3或7的任何组合,因此为假

在我的程序中,我迄今为止解决这个问题的最好办法是使用以下代码找到N的素因子,然后将值存储到向量中:

vector<int> PrimeFactors(int n)
{
    vector<int> factors;

    while (n % 2 == 0)
    {
        factors.push_back(2);
        n = n / 2;
    }

    for (int i = 3; i <= sqrt(n); i = i + 2)
        while (n % i == 0)
        {
            factors.push_back(i);
            n = n / i;
        }

    if (n > 2)
        factors.push_back(n);

    return factors;
}
向量素数因子(int n)
{
矢量因子;
而(n%2==0)
{
因素。推回(2);
n=n/2;
}
对于(int i=3;i 2)
因子。推回(n);
回报因素;
}
问题是,我不知道如何获取向量项并确定我的K值是否可以表示为这些值的总和

谁能给我一个正确的方向,或者建议一个更好的方法来解决我问题的这一部分?

你可以使用递归:

bool isSum(const std::vector<int>& F, const int K)
{
  for (const auto& f: F)
  {
    if (f > K)
    {
      break;
    }
    else if (f == K)
    {
      return true;
    }
    else if (f < K)
    {
      if (isSum(F, K - f))
      {
        return true;
      }
    }
  }
  return false;
}
bool isSum(const std::vector&F,const int K)
{
用于(常数自动&f:f)
{
如果(f>K)
{
打破
}
else如果(f==K)
{
返回true;
}
else if(f
这里我假设向量
F
中的所有因子都是按递增顺序排序的


但是,我怀疑你的因式分解函数不能正常工作。

你的问题由两部分组成,第一部分是找到你找到的
n
的素因子,第二部分是确定它们是否满足你的需要?您已经为第一部分编写了代码,因此可以尝试使用动态编程解决第二部分