এই সমস্যায়, আমরা একটি সংখ্যা n দেওয়া হয়. আমাদের কাজ হল সমস্ত Pierpont মৌলিক সংখ্যা প্রিন্ট করা n এর চেয়ে কম।
পিয়ারপন্ট প্রাইম সংখ্যা হল একটি বিশেষ ধরনের মৌলিক সংখ্যা যা ফর্মের,
p=2 i . 3 k + 1.
যেখানে p একটি মৌলিক সংখ্যা, এবং i এবং k কিছু পূর্ণসংখ্যা।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
ইনপুট − n =50
আউটপুট − 2, 3, 5, 7, 13, 17, 19, 37
এই সমস্যা সমাধানের জন্য, আমাদের শর্ত অনুসরণ করে এমন সমস্ত মৌলিক সংখ্যা খুঁজে বের করতে হবে। এর জন্য, আমরা 2 এবং 3 এর ঘাতের গুণনীয়ক সহ একটি সংখ্যা খুঁজে পাব। এবং সমস্ত মৌলিক সংখ্যা খুঁজে বের করব। এবং সেই সংখ্যাগুলি প্রিন্ট করুন যেগুলি উভয়ই, একটি মৌলিক সংখ্যা যা শর্ত অনুসরণ করে৷
উদাহরণ
আমাদের সমাধানের বাস্তবায়ন দেখানোর জন্য প্রোগ্রাম,
#include <bits/stdc++.h> using namespace std; void printPierpontPrimes(int n){ bool arr[n+1]; memset(arr, false, sizeof arr); int two = 1, three = 1; while (two + 1 < n) { arr[two] = true; while (two * three + 1 < n) { arr[three] = true; arr[two * three] = true; three *= 3; } three = 1; two *= 2; } vector<int> primes; for (int i = 0; i < n; i++) if (arr[i]) primes.push_back(i + 1); memset(arr, false, sizeof arr); for (int p = 2; p * p < n; p++) { if (arr[p] == false) for (int i = p * 2; i< n; i += p) arr[i] = true; } for (int i = 0; i < primes.size(); i++) if (!arr[primes[i]]) cout<<primes[i]<<"\t"; } int main(){ int n = 50; cout<<"All Pierpont Prime Numbers less than "<<n<<" are :\n"; printPierpontPrimes(n); return 0; }
আউটপুট
All Pierpont Prime Numbers less than 50 are : 2 3 5 7 13 17 19 37