파이썬_실전 프로젝트

프로젝트 오일러 2번문제 - 피보나치 수열

차례로 두 숫자씩 더해서 새로운 수를 만드는 수열인 피보나치 수열입니다. 처음에는 불규칙한 수열인거 같지만, 항이 커질수록 어떤 일정한 비율을 가진 등비수열에 가까워집니다. 그 공비가 황금비율이라고 부르는 (1.6...)의 비율입니다.

문제는 400만 이하의 피보나치 수중 "짝수"만의 합을 구하는 문제입니다.

 

Even Fibonacci numbers

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

 

 

피보나치 수열 만드는것 외엔 루프문과 조건문 사용은 1번 문제와 유사합니다.
피보나치 수열을 만드는 법은 이전항과 현재항을 합해서 다음항을 만드고, 루프값을 "다음항"으로 넘겨주는 것입니다.

 

피보나치 수열 만들어 보기
i=1; previous_i = 1
while i<=100:
    print(i)
    next_i = previous_i + i
    previous_i = i
    i = next_i
1
2
3
5
8
13
21
34
55
89

 

다른방법
a=1;b=1
while b<=100 :
    print(b)
    a,b = b,a+b
1
2
3
5
8
13
21
34
55
89

좀더 짧게 표현하면 위 코드와 같습니다. a,b= b, a+b 는 a (이전항)자리에 b(현재항)를, b(현재항)자리에는 a+b(다음항) 를 "동시에"대입하라는 의미인데, 얼핏보면, 순환논리의 오류(?)에 빠질것 처럼 보이지만, 파이썬에서는 잘 작동하더라구요.

 

짝수의 합은 1번문제에서 했던 것처럼 조건문만 추가해주면 됩니다.

 

정답 및 포럼 코드 보러가기

https://github.com/nomadlife/project-euler/blob/master/jupyter_nb/q002.ipynb

댓글

댓글 본문
작성자
비밀번호
버전 관리
nomadlife
현재 버전
선택 버전
graphittie 자세히 보기