এই সমস্যায়, আমাদের একটি বিজোড় সংখ্যা 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