इस समस्या में, हमें एक पूर्णांक N दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में N को बार-बार भाजक (divisor) से विभाजित करने के बाद अधिकतम योग ढूंढे।
प्रोग्राम विवरण - हम संख्या N को रिकर्सिवली तब तक विभाजित करेंगे जब तक यह एक न हो जाए और फिर सभी भाजकों का योग करेंगे और सभी भाजकों का अधिकतम ढूंढेंगे।
आइए एक उदाहरण से समझते हैं:
इनपुट - N = 12
आउटपुट - 22
व्याख्या - आइए संख्या को रिकर्सिवली विभाजित करें और योग ढूंढें।
विभाजन 1: 12/2 = 6 विभाजन 2: 6/2 = 3 विभाजन 3: 3/3 = 1 योग = 12+6+3+1 = 22
इस समस्या को हल करने के लिए, हम N को N के सबसे छोटे भाजक से विभाजित करके व्यक्तिगत मानों को अधिकतम बनाकर अधिकतम योग ढूंढेंगे।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int smallestDivisor(int n){
int mx = sqrt(n);
for (int i = 2; i <= mx; i++)
if (n % i == 0)
return i;
return n;
}
int calculateMaxSum(int n) {
long long maxSum = n;
while (n > 1) {
int divisor = smallestDivisor(n);
n /= divisor;
maxSum += n;
}
return maxSum;
}
int main(){
int N = 12;
cout << "संख्या " << N << " को बार-बार भाजक से विभाजित करने के बाद अधिकतम योग है " << calculateMaxSum(N);
return 0;
}
आउटपुट
संख्या 12 को बार-बार भाजक से विभाजित करने के बाद अधिकतम योग है 22