এই সমস্যায়, একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া থাকে এবং N-এর চেয়ে ছোট বা সমান সব প্রাইম কোয়াড্রাপলেট প্রিন্ট করতে হবে।
প্রাইম কোয়াড্রাপলেট হলো চারটি প্রাইম নম্বরের সেট যেগুলো হিসাব করা হয় {p, p+2, p+6, p+8}। উদাহরণ: 5, 7, 11, 13।
উদাহরণ দিয়ে সমস্যাটি বুঝি:
ইনপুট: N = 15 আউটপুট: 5 7 11 13
এই সমস্যাটি সমাধান করার একটি সহজ পদ্ধতি হলো প্রাইম নম্বর p-এর সব কোয়াড্রাপলেট জেনারেট করা এবং চেক করা যে p, p+2, p+6, p+8 সবগুলো প্রাইম কিনা। এই সমাধানটি সহজ কিন্তু কম্পাইলারের জন্য জটিল।
একটি আরও দক্ষ পদ্ধতি হলো সব প্রাইম নম্বর খুঁজে বের করা (এρατοস্থেনিসের ছাঁনি বা Sieve of Eratosthenes ব্যবহার করে) এবং সেগুলো একটি নির্দিষ্ট পরিসরের মধ্যে অ্যারেতে সংরক্ষণ করা। তারপর অ্যারেটি ট্রাভার্স করে চেক করা যে p, p+2, p+6, p+8 প্রাইম কিনা এবং যদি সবগুলো প্রাইম হয় তবে প্রিন্ট করা।
C++ উদাহরণ
#include <bits/stdc++.h> using namespace std; #define MAX 100000 bool prime[MAX]; void primeNumberGenerator() { memset(prime, true, sizeof(prime)); for (int p = 2; p * p < MAX; p++) { if (prime[p] == true) { for (int i = p * 2; i < MAX; i += p) prime[i] = false; } } } void printPrimeQuadruplet(int n) { for (int i = 0; i < n - 7; i++) { if (prime[i] && prime[i + 2] && prime[i + 6] && prime[i + 8]) { cout<<i<<" "<<i+2<<" "<<i+6<<" "<<i+8<<endl; } } } int main() { primeNumberGenerator(); int n = 42; cout<<"All prime Quadruplets are :\n"; printPrimeQuadruplet(20); return 0; }আউটপুট
সব প্রাইম কোয়াড্রাপলেটগুলো হলো:
5 7 11 13 11 13 17 19