不同数字的最大和,以使这些数字的LCM在C ++中为N

在这个问题中,我们是数字N。我们的任务是创建一个程序,以查找不同数字的最大和,以使这些数字的LCM在C ++中为N。

问题描述

我们需要找到数量为N的所有因子的总和。并添加所有不同的因子以找到最大总和。

让我们举个例子来了解这个问题,

输入值

N = 12

输出结果

28

说明

All distinct factors of N are 1, 2, 3, 4, 6, 12.

Sum = 1 + 2 + 3 + 4 + 6 + 12 = 28

解决方法

一个简单的解决方案是找到数量的所有因素,然后添加所有不同的因素以找到结果。

为此,我们将迭代直到N的平方根。然后检查数字是否除以N。如果是,请检查数字是否相异,如果是,则添加数字和除数商,否则添加数字。返回最终的maxSum。

示例

该程序说明了我们解决方案的工作原理,

#include <iostream>

using namespace std;

int calcMaxSumForLCM(int N){

   int maxSum = 0;

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

      if (N%i == 0){

         if (i == (N/i))

            maxSum = maxSum + i;

         else

            maxSum = maxSum + i + (N/i);

      }

   }

   return maxSum;

}

int main(){

   int N = 17;

   cout<<"The sum of distinct numbers such that LCM if these numbers is "<<N<<" is "<<calcMaxSumForLCM(N);

   return 0;

}

输出结果

The sum of distinct numbers such that LCM if these numbers is 17 is 18

以上是 不同数字的最大和,以使这些数字的LCM在C ++中为N 的全部内容, 来源链接: utcz.com/z/317025.html

回到顶部