इस समस्या में, हमें दो मान lValue और hValue दिए गए हैं। हमारा कार्य दी गई रेंज में सबसे बड़े जुड़वां अभाज्य संख्याएं ज्ञात करना है।
दो संख्याओं को जुड़वां संख्याएं कहा जाता है यदि दोनों अभाज्य संख्याएं हैं और उनके बीच का अंतर 2 है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट : lValue = 65, rValue = 100 आउटपुट : 71, 73
समाधान दृष्टिकोण
समस्या का एक सरल समाधान rValue - 2 से lValue तक लूप करना और i और (i+2) के प्रत्येक जोड़े की जुड़वां के लिए जांच करना और पहली घटित जुड़वां को प्रिंट करना है।
एक अन्य दृष्टिकोण रेंज में सभी अभाज्य संख्याओं को ढूंढना और फिर i और (i+2) की सबसे बड़ी जोड़ी की जांच करना है जो अभाज्य हैं और
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <bits/stdc++.h> using namespace std; void findLargestTwins(int lValue, int uValue) { bool primes[uValue + 1]; memset(primes, true, sizeof(primes)); primes[0] = primes[1] = false; for (int p = 2; p <= floor(sqrt(uValue)) + 1; p++) { if (primes[p]) { for (int i = p * 2; i <= uValue; i += p) primes[i] = false; } } int i; for (i = uValue; i >= lValue; i--) { if (primes[i] && (i - 2 >= lValue && primes[i - 2] == true)) { break; } } if(i >= lValue ) cout<<"दी गई रेंज में सबसे बड़े जुड़वां: ("<<(i-2)<<", "<<i<<")"; else cout<<"कोई जुड़वां संभव नहीं"; } int main(){ int lValue = 54; int uValue = 102; findLargestTwins(lValue, uValue); return 0; } आउटपुट
दी गई रेंज में सबसे बड़े जुड़वां: (71, 73)