在C ++中最大化数字的四个因子的乘积

给定任务是计算在给定条件下可以从给定数N的四个因子A,B,C,D获得的最大乘积-

四个因子的总和应等于数字N,即N = A + B + C + D。

输入-N = 10

输出-20

说明-10的因数是:1、2、5、10。

最大乘积可以通过乘以5 * 2 * 2 * 1 = 20来获得,并且也满足给定条件,即5 + 2 + 2 + 1 = 10。

输入-N = 16

输出-256

说明-16的因数是:1、2、4、8、16。

通过乘以4 * 4 * 4 * 4 = 256可以获得最大乘积,并且它满足给定条件,即4 + 4 + 4 + 4 = 16。

在以下程序中使用的方法如下

  • 创建一个int类型的数组Factors []来存储给定数量的因数,并创建一个int类型的变量K = 0来跟踪所占用的数组大小。

  • 创建一个函数FindFactors()以查找给定数字的因数。

  • 从i = 1开始循环;i * i <= N; 我++

  • 在循环内部设置if(N%i == 0)来检查I是否为因数。

  • 如果i是一个因素,则检查是否(N / I == i)。如果是,则将i插入到Factors []中,否则将N / i和i都输入到Factors []中。

  • 创建功能Product()以找出因素之外的最大乘积。

  • 初始化int product = 0; 并且大小= K + 1;

  • 初始化四个新的嵌套循环,并将其运行到“大小”。

  • 在循环内,初始化int sum = Factors [i] + Factors [] + Factors [k] + Factors [l];

  • 检查(sum == N),如果是,则初始化pro = Factors [i] * Factors [j] * Factors [k] * Factors [l];

  • 然后检查(pro> product),如果是,则输入product = pro;

  • 返回

示例

#include <bits/stdc++.h>

using namespace std;

//数组存储因素

int Factors[30];

int K=0;

//函数查找因素

int FindFactors(int N){

   //循环播放直到我到达sqrt(N)

   for (int i = 1; i * i <= N; i++){

      if (N % i == 0){

         /* if both the factors are same then only one will be inserted*/

         if ((N / i) == i){

            Factors[K]=i;

            K++;

         }

         else{

            //在数组中插入第一个因子

            Factors[K]=N/i;

            K++;

            //在数组中插入第二个因子

            Factors[K]=i;

            K++;

         }

      }

   }

}

//查找最大乘积的功能

int Product(int N){

   int product = 0;

   int size = K+1;

   for (int i = 0; i < size; i++)

      for (int j = 0; j < size; j++)

         for (int k = 0; k < size; k++)

            for (int l = 0; l < size; l++){

               //添加每组因子

               int sum = Factors[i] + Factors[j] + Factors[k] + Factors[l];

               //检查总和是否等于N-

               if (sum == N){

                  //乘以因子

                  int pro = Factors[i] * Factors[j] * Factors[k] * Factors[l];

                  //如果发现较大的值,则替换产品的值

                  if(pro > product)

                     product = pro;

               }

            }

   return product;

}

//主要功能

int main(){

   int N = 10;

   //调用函数查找N的因子

   FindFactors(N);

   //Calling查找最大乘积的功能

   cout<<Product(N);

   return 0;

}

输出结果

如果运行上面的代码,我们将获得以下输出-

Maximum Profit: 20

以上是 在C ++中最大化数字的四个因子的乘积 的全部内容, 来源链接: utcz.com/z/343425.html

回到顶部