একটি সমস্যা আলোচনা করব যেখানে আমাদের একটি সংখ্যা N দেওয়া আছে, এবং আমাদের এই সংখ্যাকে সর্বোচ্চ প্রাইম সংখ্যাগুলোর যোগফলে ভাগ করতে হবে। উদাহরণস্বরূপ:
Input: N = 7 Output: 2 2 3 Explanation: 7 কে দুটি ২ এবং একটি ৩-এর যোগফল হিসেবে প্রকাশ করা যায় যা সর্বোচ্চ সম্ভব প্রাইম সংখ্যা। Input : N = 17 Output: 2 2 2 2 2 2 2 3
সমাধানের পদ্ধতি
একটি সংখ্যাকে প্রাইম সংখ্যাগুলোর যোগফলে প্রকাশ করতে, আমরা একটি প্রাইম সংখ্যা N-থেকে বিয়োগ করতে পারি এবং পার্থক্যটি প্রাইম কিনা চেক করতে পারি। যদি পার্থক্যটি প্রাইম হয়, তবে N কে দুটি প্রাইম সংখ্যার যোগফল হিসেবে প্রকাশ করা সম্ভব।
কিন্তু এখানে, আমাদের সর্বোচ্চ সংখ্যক প্রাইম সংখ্যা খুঁজে বের করতে হবে, এবং সেজন্য আমাদের ন্যূনতম প্রাইম সংখ্যাগুলো নিতে হবে, অর্থাৎ ২ এবং ৩। আমরা যেকোনো সংখ্যাকে ২ এবং ৩-এর যোগফলে ফর্ম করতে পারি।
সংখ্যাটি জোড় (even) কিনা চেক করুন; যদি জোড় হয়, তবে এটি ( N/2 ) সংখ্যক ২-এর যোগফলে ফর্ম করা যায়।
যদি বিজোড় (odd) হয়, তবে এটি একটি ৩ এবং [ (N-3) / 2 ] সংখ্যক ২-এর যোগফলে ফর্ম করা যায়।
এভাবে আমরা N কে সর্বোচ্চ সংখ্যক প্রাইমের যোগফলে প্রকাশ করতে পারি।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main(){ int N = 7; // চেক করুন N বিজোড় কিনা, // হ্যাঁ হলে ৩ প্রিন্ট করুন // এবং N থেকে ৩ বিয়োগ করুন। if (N & 1 == 1) { cout << "3 +"; N -= 3; } // // ২ প্রিন্ট এবং বিয়োগ করুন // যতক্ষণ N ০ হয় না। while (N!=2) { cout << " 2 +"; N -= 2; } cout << " 2"; return 0; }
আউটপুট
3 + 2 + 2
উপসংহার
এই টিউটোরিয়ালে, আমরা একটি সংখ্যাকে সর্বোচ্চ সংখ্যক প্রাইম সংখ্যার যোগফল হিসেবে প্রকাশ করার কথা আলোচনা করেছি। আমরা একটি সহজ পদ্ধতি আলোচনা করেছি সংখ্যাকে ২ এবং ৩-এর যোগফল হিসেবে প্রকাশ করে। আমরা এই সমস্যার জন্য C++ প্রোগ্রামও আলোচনা করেছি যা আমরা C, Java, Python ইত্যাদি প্রোগ্রামিং ভাষায়ও করতে পারি। আশা করি আপনি এই টিউটোরিয়ালটিকে উপকারী পাবেন।