Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 시리즈 0, 2, 1, 3, 1, 5, 2, 7, 3...의 N번째 항을 찾는 프로그램

<시간/>

이 문제에서 숫자 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