상세 컨텐츠

본문 제목

C 언어 예제, 피보나치 수열 짝수항 합 구하기

컴퓨터 관련/C 언어 예제

by 열정과 함께 2013. 8. 14. 02:37

본문

목표는 이렇게 만드는 것이다.

**수치는 검산을 위해 다 표기되게 만들었음. 깔끔하게 내고 싶으면 없어도 무방**

**내가 푼 문제는 1000000 이하의 피보나치 수열 짝수항의 합을 구하는 것이다**


여기서 잠깐. 피보나치 수열의 일반항을 구하는 방법은 없다. 따라서 약간의 조작이 필요한데, 피보나치 수열의 짝수항의 합은 정리해 보면 다음과 같다.





이렇게 된다. 따라서 

을 차례대로 하는 것은 곧 피보나치 수열의 전체 합을 구하라는 것과 같은 의미란 것을 알 수 있다. 따라서 이는, 구하고자 하는 수열의 합이



 라면, 이 문제를 풀면서 구해야 하는 값은 

이 되는 것을 알 수 있다.


아래는 이를 토대로 한 코딩(나는 용이한 검산을 위해 printf 를 상당히 많이 사용하였다. 그러나 여기에 적을 때는 그럴 필요는 없겠지)


#include <stdio.h>

int main()

{

int i=1,j,sum_1=0,sum_2=0,sum_3=0,ansr;

sum_1 = 1+i;

ansr = 1+1+sum_1;//1+1

sum_2 = 1 + sum_1;

ansr = ansr + sum_2;

for(j=1;j<100;j++)

{

sum_3 = sum_1 + sum_2;

ansr = ansr + sum_3;

sum_1 = sum_2 + sum_3;

ansr = ansr + sum_1;

sum_2 = sum_1 + sum_3;

ansr = ansr + sum_2;

if(sum_1 > 1000000)

break;

else if(sum_2 > 1000000)

break;

else if(sum_3 > 1000000)

break;

}

printf("\n");

printf("답은 %d \n", ansr);

return 0;

}


for 문 안에서 수열이 순환될 수 있는 틀을 만들어 놓고, 그 이후는 자동적으로 계산되게 만들었다. 더 간단하게 만들 여지는 있을 것 같은데..... 잘 생각이 나질 않네......




관련글 더보기

댓글 영역