[Q2] Even Fibonacci numbers

Xzero·2020년 5월 23일
0

Project_Euler

목록 보기
1/2
post-thumbnail

들어가기

https://projecteuler.net/problem=2


문항해설

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,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, \cdots

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


피보나치의 수 중 400만 이하이면서 짝수인 것들의 합을 구하는 문제네요.


예시코드

우선 피보나치 수열의 일반항을 반환하는 함수를 만들어야 겠습니다.

def fibo(n):
    """피보나치 수열"""
    a, b = 0, 1
    for i in range(1, n + 1):
        a, b = b, a + b
    return b
  • fibo는 자연수 n을 입력받아 피보나치 수열의 n번째 항을 반환합니다.
  • fibo(1)은 1, fibo(2)는 2, fibo(3)은 3을 반환합니다.
  • a,b = b, a+b 는 a를 b로, b를 a+b로 대치합니다. 두 문자를 한꺼번에 바꾸기 위해서는 보통 임시변수가 하나 더 필요한데요. 파이썬에서는 이런 식으로 임시변수 없이 문자를 대치할 수 있습니다.
mysum2 = 0
i = 1 
while fibo(i) <= 4000000:
    if fibo(i) % 2 == 0:
        mysum2 = mysum2 + fibo(i)
    if fibo(i) > 4000000:
        break
    i = i + 1

print(mysum2)  # 4613732```
  • mysum2 : 우리가 원하는 합을 담을 변수입니다.
  • 첫번째 if는 피보나치 수열의 값이 2의 배수일 때 mysum2에 누적하여 더합니다.
  • 두번째 if는 4백만이 넘어가면 wihie문을 멈추는 (braek)는 명령입니다.

마무리

피보나치 수열은 수학적으로 재미있는 성질을 많이 가지고 있습니다.
https://en.wikipedia.org/wiki/Fibonacci_number
단순히 합을 계산하는 것은 컴퓨터로 하기에 적당할 것 같네요.

profile
coding & mathematics

0개의 댓글