Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng các ước số khác nhau của N (LCM = N) trong C++


Cho số N, tìm tổng lớn nhất các số khác nhau sao cho LCM của chúng là N. (Bài toán trùng lặp với bài 1003079588, cùng một giải pháp: tổng tất cả ước số của N).

Ví dụ: N=12 → ước: 1,2,3,4,6,12 → tổng = 28.

Ví dụ (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+=i;
            else 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;
}

Đầu ra

The sum of distinct numbers such that LCM if these numbers is 17 is 18