এই সমস্যায়, আমাদের একটি সংখ্যা N দেওয়া আছে। আমাদের কাজ হল সি++-এ N হিসেবে LCM থাকা স্বতন্ত্র সংখ্যাগুলোর সর্বোচ্চ যোগফল বের করার একটি প্রোগ্রাম তৈরি করা।
সমস্যা বর্ণনা
এখানে, আমাদের সেই সর্বোচ্চ সংখ্যাগুলোর যোগফল বের করতে হবে যাদের নিম্নতম সাধারণ গুণফল (LCM) N।
উদাহরণ দিয়ে বুঝতে চেষ্টা করি,
ইনপুট
N = 10
আউটপুট
18
ব্যাখ্যা
LCM 10-এর সাথে সর্বোচ্চ যোগফল 1 + 2 + 5 + 10 = 18
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হবে এই ধারণা ব্যবহার করা যে যদি আমরা N কে LCM হিসেবে চাই, তবে আমাদের N-এর সব স্বতন্ত্র ভাজক নিতে হবে। এবং সেগুলো যোগ করে maxSum পেতে হবে।
এজন্য আমরা N-এর সব ফ্যাক্টর বের করব। তারপর সেগুলো যোগ করব, এটিই সর্বোচ্চ হবে কারণ আমরা সেই সব সংখ্যাগুলো বিবেচনা করেছি যা LCM কে N बनानेতে পারে।
উদাহরণ
আমাদের সমাধানের কার্যকারিতা বোঝার জন্য প্রোগ্রাম,
#include <iostream> using namespace std; int calcFactorSum(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 = 42; cout<<"The sum of distinct numbers with LCM as "<<N<<" is "<<calcFactorSum(N); return 0; }
আউটপুট
The sum of distinct numbers with LCM as 42 is 96