C++ 中求使得这些数字的最小公倍数为 N 的不同数字的最大和
在这个问题中,我们给定一个数字 N。我们的任务是创建一个程序,在 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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP