এই সমস্যায়, আমাদের একটি বিজোড় সংখ্যা N দেওয়া হয়েছে৷ আমাদের কাজ হল একটি বিজোড় সংখ্যাকে মৌলিক সংখ্যার যোগফল হিসাবে প্রকাশ করা৷
সংখ্যা প্রকাশ করার সময় সর্বোচ্চ তিনটি মৌলিক সংখ্যা থাকতে পারে।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: N =55
আউটপুট: 53 + 2
সমাধান পদ্ধতি:
বিজোড় সংখ্যাটিকে মৌলিক সংখ্যার যোগফল হিসাবে উপস্থাপন করা যেতে পারে। এই প্রাইমগুলিকে বিবেচনায় নিয়ে আমাদের তিনটি ক্ষেত্রে রয়েছে৷
কেস 1: n একটি মৌলিক সংখ্যা হলে, এটি একটি মৌলিক সংখ্যা n এর যোগফল হিসাবে উপস্থাপন করা হয় .
কেস 2: যদি (n - 2) একটি মৌলিক সংখ্যা হয়, তবে এটি দুটি মৌলিক সংখ্যা n-2 এবং 2 এর যোগফল হিসাবে উপস্থাপন করা হয় .
কেস 3: ( n - 3 ) একটি জোড় সংখ্যা যা গোল্ডবাচের অনুমান পদ্ধতি ব্যবহার করে দুটি মৌলিক সংখ্যার যোগফল হিসাবে উপস্থাপন করা যেতে পারে যেখানে আমরা পরীক্ষা করব যে একটি সংখ্যা A মৌলিক এবং সংখ্যা {(n-3) - A }ও মৌলিক তাহলে এটি প্রিন্ট করুন।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <iostream> using namespace std; bool isPrime(int x) { if (x == 0 || x == 1) return false; for (int i = 2; i * i <= x; ++i) if (x % i == 0) return false; return true; } void primeAsSumofPrime(int n) { if (isPrime(n) ) cout<<n; else if (isPrime(n - 2)) cout<<"2 "<<"+ "<<(n - 2); else{ cout<<"3 "<<"+ "; n -= 3; for (int i = 0; i < n; i++) { if (isPrime(i) && isPrime(n - i)) { cout<<i<<" + "<<(n - i); break; } } } } int main() { int n = 561; cout<<"The number "<<n<<" expressed as sum of primes is "; primeAsSumofPrime(n); return 0; }
আউটপুট −
The number 561 expressed as sum of primes is 3 + 11 + 547