इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया गया है, और हमें N से कम या बराबर सभी अभाज्य चौगुनी (Prime Quadruplet) प्रिंट करनी हैं।
अभाज्य चौगुनी चार अभाज्य संख्याओं का समूह है जिसकी गणना {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 सभी अभाज्य संख्याएं हैं। यह समाधान आसान है लेकिन कंपाइलर के लिए अधिक जटिल है।
एक और कुशल दृष्टिकोण सभी अभाज्य संख्याओं को ढूंढना है (एराटोस्थनीज की छलनी का उपयोग करके) और उन्हें एक निश्चित सीमा तक एक सरणी में संग्रहीत करना। और सरणी को पार करके जांचें कि p, p+2, p+6, p+8 अभाज्य हैं या नहीं और यदि वे सभी अभाज्य हैं तो प्रिंट करें।
उदाहरण
#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