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

更新於: 2020年10月15日

127 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告