इस समस्या में, हमें एक संख्या n दी गई है। हमारा काम सभी पियरपोंट अभाज्य संख्याओं . को प्रिंट करना है n से कम।
पियरपोंट प्राइम संख्या एक विशेष प्रकार की अभाज्य संख्या होती है जो कि रूप की होती है,
p=2 i . 3 k + 1.
जहां p एक अभाज्य संख्या है, और i और k कुछ पूर्णांक हैं।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - एन =50
आउटपुट - 2, 3, 5, 7, 13, 17, 19, 37
इस समस्या को हल करने के लिए, हमें उन सभी अभाज्य संख्याओं को खोजना होगा जो इस शर्त का पालन करती हैं। इसके लिए हम 2 और 3 की घातों के गुणनखंडों वाली एक संख्या प्राप्त करेंगे और सभी अभाज्य संख्याएँ ज्ञात करेंगे। और उन नंबरों को प्रिंट करें जो दोनों हैं, एक अभाज्य संख्या जो शर्त का पालन करती है।
उदाहरण
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,
#include <bits/stdc++.h> using namespace std; void printPierpontPrimes(int n){ bool arr[n+1]; memset(arr, false, sizeof arr); int two = 1, three = 1; while (two + 1 < n) { arr[two] = true; while (two * three + 1 < n) { arr[three] = true; arr[two * three] = true; three *= 3; } three = 1; two *= 2; } vector<int> primes; for (int i = 0; i < n; i++) if (arr[i]) primes.push_back(i + 1); memset(arr, false, sizeof arr); for (int p = 2; p * p < n; p++) { if (arr[p] == false) for (int i = p * 2; i< n; i += p) arr[i] = true; } for (int i = 0; i < primes.size(); i++) if (!arr[primes[i]]) cout<<primes[i]<<"\t"; } int main(){ int n = 50; cout<<"All Pierpont Prime Numbers less than "<<n<<" are :\n"; printPierpontPrimes(n); return 0; }
आउटपुट
All Pierpont Prime Numbers less than 50 are : 2 3 5 7 13 17 19 37