在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
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短