इस समस्या में, हमें एक पूर्णांक N दिया जाता है और हमें सभी सुरक्षित अभाज्य संख्या . को प्रिंट करना होता है जिनका मान N से कम है।
एक सुरक्षित अभाज्य संख्या एक अभाज्य संख्या है जिसे [(2*p)-1] के रूप में दर्शाया जा सकता है जहाँ p भी एक अभाज्य संख्या है।
उदाहरण − 5[(2*2) +1] , 7[(2*3)+1].
आइए समस्या को बेहतर ढंग से समझने के लिए कुछ उदाहरण लेते हैं -
Input: N = 12 Output: 5 7 11.
इस समस्या को हल करने के लिए, हम N से कम सभी अभाज्य संख्याएँ पाएंगे (इसके लिए हम Sieve of Eratosthenes का उपयोग करेंगे)। और जांचें कि अभाज्य संख्या एक सुरक्षित अभाज्य संख्या है या नहीं और प्रिंट करें कि क्या यह एक सुरक्षित अभाज्य संख्या है।
उदाहरण
#include <bits/stdc++.h> using namespace std; void printPrime(int n){ cout<<n<<"\t"; } void generateSafePrimes(int n){ int prime[n + 1]; for (int i = 2; i <= n; i++) prime[i] = 1; prime[0] = prime[1] = 0; for (int p = 2; p * p <= n; p++) { if (prime[p] == 1) { for (int i = p * 2; i <= n; i += p) prime[i] = 0; } } for (int i = 2; i <= n; i++) { if (prime[i] != 0) { int temp = (2 * i) + 1; if (temp <= n && prime[temp] != 0) prime[temp] = 2; } } for (int i = 5; i <= n; i++) if (prime[i] == 2) printPrime(i); } // Driver code int main(){ int n = 34; cout<<"safe Prime numbers less than "<<n<<" are :\n"; generateSafePrimes(n); return 0; }
आउटपुट
34 से कम सेफ प्राइम नंबर हैं -
5 7 11 23