Programming/Python

[Project Euler] 002. 짝수인 피보나치 수

Dennis Ritchie 2018. 4. 17. 14:57

1. 문제


<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, 그 다음 항이 2로 시작한다면 처음 10개의 항은 다음과 같습니다.


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


400만을 넘지 않는 피보나치 수열의 항들 가운데 짝수인 항들의 합을 구하세요.


2. 풀이


1번 문제보다는 어렵지만 어렵지 않게(?) 풀 수 있습니다.

p1 = 1 # 초항, 나중에는 구하고자 하는 항의 전전 항
p2 = 2 # 제2항, 구하고자 하는 항의 전 항
p3 = p2 # 새로 구하는 항
sum = 0 # 구하고자 하는 합
sum = p3 # 제2항이 짝수이므로 미리 더한다

while p3 < 4 * 10 ** 6:
    p3 = p1 + p2 # 앞서는 두 항을 더하여 새로운 피보나치 수열의 항을 만든다
    if p3 % 2 == 0:
        sum += p3 # 새로운 항이 짝수이면 sum에 새로운 항을 더한다
    p1, p2 = p2, p3 # 새로운 항을 전 항으로, 전 항을 전전 항으로 설정한다

print(sum)