在C ++中,LCM为N时,不同数字的最大和

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

问题描述

在这里,我们需要找到以N为最低公倍数(LCM)的最大数字的总和。

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

输入值

N = 10

输出结果

18

说明

Maximum sum with LCM 10 is 1 + 2 + 5 + 10 = 18

解决方法

解决此问题的简单方法是使用以下想法:如果我们希望将N作为LCM,则需要采用N的所有除数。并将它们相加以获得maxSum。

为此,我们将找到N的所有因子。然后将它们加起来,将得到最大值,因为我们考虑了所有可能导致LCM的数字为N。

示例

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

#include <iostream>
using namespace std;

int calcFactorSum(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 = 42;
   cout<<"The sum of distinct numbers with LCM as "<<N<<" is "<<calcFactorSum(N);
   return 0;
}

输出结果

The sum of distinct numbers with LCM as 42 is 96