Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หาผลรวมสูงสุดของจำนวนที่ต่างกันที่ LCM เป็น N ใน C++

โจทย์

เหมือนโจทย์ก่อนหน้า: กำหนด N หาผลรวมสูงสุดของจำนวนที่ต่างกันซึ่ง LCM เท่ากับ N

ตัวอย่าง: N = 12 → ตัวหาร: 1, 2, 3, 4, 6, 12 → Sum = 28

วิธีการแก้ปัญหา

หาตัวหารทั้งหมดของ N แล้วบวกกัน (เหมือนโจทย์ก่อนหน้า)

ตัวอย่างโค้ด C++

#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