একটি পূর্ণসংখ্যা N দেওয়া আছে। N কে বারবার এর ডিভাইজার দিয়ে ভাগ করে ১ হয়ে যাওয়া পর্যন্ত সব ভাগফলের যোগফলের ম্যাক্সিমাম মান বের করতে হবে।
উদাহরণ: N = 12 -> আউটপুট: ২২
ব্যাখ্যা: ১২/২=৬, ৬/২=৩, ৩/৩=১। সাম = ১২+৬+৩+১ = ২২।
সমাধান: প্রতিবার 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 << "The maximum sum after repeatedly dividing " << N << " by divisor is " << calculateMaxSum(N);
return 0;
}
আউটপুট
The maximum sum after repeatedly dividing 12 by divisor is 22