इस समस्या में, हमें एक संख्या n दी गई है। हमारा काम सभी अभाज्य और फाइबोनैचि संख्याओं को n से कम या उसके बराबर प्रिंट करना है।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: n = 30 Output: 2 3 5 13
स्पष्टीकरण
30 से कम फाइबोनैचि संख्याएं हैं:1 1 2 3 5 8 13 21.
इन संख्याओं में से अभाज्य संख्याएँ 2 3 5 13 हैं।
इस समस्या को हल करने के लिए, हमें यह जांचना होगा कि n से कम फाइबोनैचि श्रृंखला की सभी संख्याएँ एक अभाज्य संख्या हैं या नहीं।
इसके लिए हम सभी अभाज्य संख्याएँ n से कम या उसके बराबर पाएंगे। और जांचें कि उत्पन्न संख्याएं फाइबोनैचि श्रृंखला में निहित हैं या नहीं।
यदि कोई संख्या फाइबोनैचि श्रृंखला . में है , तो यह 5i2 + 4 या 5i2 - 4 के रूप में होता है।
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; bool isSquare(int n) { int sr = sqrt(n); return (sr * sr == n); } void printPrimeAndFibnacciNumbers(int n) { bool primeNumbers[n + 1]; memset(primeNumbers, true, sizeof(primeNumbers)); for (int p = 2; p * p <= n; p++) { if (primeNumbers[p] == true) { for (int i = p * 2; i <= n; i += p) primeNumbers[i] = false; } } for (int i=2; i<=n; i++) if (primeNumbers[i] && (isSquare(5*i*i+4) > 0 || isSquare(5*i*i-4) > 0)) cout<<i<<"\t"; } int main() { int N = 50; cout<<"All prime Fibonacci numbers less than "<<N<<" are :\n"; printPrimeAndFibnacciNumbers(N); return 0; }
आउटपुट
All prime Fibonacci numbers less than 50 are : 23513