समस्या विवरण
इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य C++ में इन संख्याओं का LCM N होने वाली अलग-अलग संख्याओं का अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है।
हमें संख्या N के सभी गुणनखंडों का योग ढूंढना है। और अधिकतम योग खोजने के लिए सभी अलग-अलग को जोड़ना है।
उदाहरण
इनपुट
N = 12
आउटपुट
28
व्याख्या
N के सभी अलग-अलग गुणनखंड 1, 2, 3, 4, 6, 12 हैं। योग = 1 + 2 + 3 + 4 + 6 + 12 = 28
समाधान दृष्टिकोण
समस्या का एक सरल समाधान संख्या के सभी गुणनखंडों को ढूंढना और फिर परिणाम खोजने के लिए सभी अलग-अलग गुणनखंडों को जोड़ना होगा।
इसके लिए, हम N के वर्गमूल तक पुनरावृति करेंगे। और जांचेंगे कि क्या संख्या N को विभाजित करती है। यदि हां, तो जांचें कि क्या यह अलग है, यदि हां तो संख्या और भागफल जोड़ें अन्यथा संख्या जोड़ें। अंतिम maxSum वापस करें।
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