इस समस्या में, हमें एक पूर्णांक N दिया गया है और हमें उन सभी सुरक्षित अभाज्य संख्याओं को प्रिंट करना है जिनके मान N से कम हैं।
एक सुरक्षित अभाज्य संख्या एक अभाज्य संख्या है जिसे [(2*p) - 1] के रूप में दर्शाया जा सकता है जहां p भी एक अभाज्य संख्या है।
उदाहरण - 5[(2*2) +1], 7[(2*3)+1]।
समस्या को बेहतर ढंग से समझने के लिए कुछ उदाहरण लेते हैं -
इनपुट: N = 12 आउटपुट: 5 7 11
इस समस्या को हल करने के लिए, हम N से कम सभी अभाज्य संख्याएं ढूंढेंगे (इसके लिए हम एराटोस्थनीज की छलनी का उपयोग करेंगे)। और जांचेंगे कि अभाज्य संख्या सुरक्षित अभाज्य संख्या है या नहीं और यदि यह सुरक्षित अभाज्य संख्या है तो प्रिंट करें।
उदाहरण
#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); } // ड्राइवर कोड int main(){ int n = 34; cout<<"safe Prime numbers less than "<<n<<" are :\n"; generateSafePrimes(n); return 0; } आउटपुट
34 से कम सुरक्षित अभाज्य संख्याएं हैं -
5 7 11 23