इस समस्या में, हमें एक संख्या N दी गई है। हमारा कार्य C++ में श्रृंखला 0, 2, 1, 3, 1, 5, 2, 7, 3... का N-वां पद ढूंढने के लिए एक प्रोग्राम बनाना है।
समस्या विवरण
हमें श्रृंखला दी गई है:
0, 2, 1, 3, 1, 5, 2, 7, 3... N पद
इस श्रृंखला के Nवें पद को ढूंढने के लिए, हम श्रृंखला के सामान्य पद को सूत्रबद्ध करेंगे और फिर Nवां पद ढूंढेंगे।
उदाहरण
इनपुट - N = 7
आउटपुट - 2
हल का दृष्टिकोण:
समस्या को हल करने और श्रृंखला के लिए सामान्य सूत्र ढूंढने के लिए। हमें श्रृंखला को बारीकी से देखना होगा क्योंकि इसमें इसके अंदर दो अलग-अलग श्रृंखलाएं हैं। इस प्रकार की श्रृंखला शुरुआत में थोड़ी भ्रमित करने वाली होती है लेकिन एक बार जब आप जान जाते हैं कि यह एक मिश्रित श्रृंखला है, तो आपको सामान्य पद ढूंढना आसान हो जाएगा।
यहां, दो श्रृंखलाएं हैं: एक सम इंडेक्स पर और दूसरी विषम इंडेक्स पर। आइए उन्हें व्यक्तिगत रूप से देखें।
सम इंडेक्स श्रृंखला: 0, 1, 1, 2, 3, ...
विषम इंडेक्स श्रृंखला: 2, 3, 5, 7, ...
अब, यह आपके लिए स्पष्ट होना चाहिए कि सम श्रृंखला फाइबोनैचि श्रृंखला है। और विषम श्रृंखला अभाज्य संख्याओं की श्रृंखला है।
इसलिए, श्रृंखला है:
यदि N विषम है, तो (N/2) इंडेक्स फाइबोनैचि श्रृंखला।
यदि N सम है, तो (N/2) इंडेक्स अभाज्य संख्या।
हमारे समाधान के कार्य को स्पष्ट करने के लिए प्रोग्राम,
#include <iostream>
using namespace std;
int findNthPrimeTerm(int n) {
int primeCount = 0;
for (int i = 2; ; i++) {
int isPrime = 1;
for (int j = 2; j <= (i/2); j++) {
if (i % j == 0) {
isPrime = 0;
break;
}
}
if (isPrime) primeCount++;
if (primeCount == n) {
return i;
break;
}
}
return -1;
}
int FibonaciiNthTerm(int n) {
int nthTerm = 1, last = 0;
int i;
if(n == 0) return 0;
else if(n == 1) return 1;
else{
for (i = 2; i <= n; i++) {
nthTerm += last;
last = nthTerm - last;
}
return nthTerm;
}
}
int findNTerm(int N) {
if (N % 2 == 0) return findNthPrimeTerm(N/2);
else {
return FibonaciiNthTerm(N/2);
}
}
int main() {
int N = 13;
cout << N << "th term of the series is " << findNTerm(N) << endl;
N = 4;
cout << N << "th term of the series is " << findNTerm(N);
return 0;
}
आउटपुट:
13th term of the series is 8 4th term of the series is 3