演算法設計之Project Euler 02:Even Fibonacci numbers
阿新 • • 發佈:2018-12-08
一、問題
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.
二、問題描述
Fibonacci數列中的每一項都是由前兩項累加得到的,前兩項分別為1和2,由此可以得到Fibonacci數列的前10項。
如果一個Fibonacci數列中的所有數都不超過4000000,對這個數列中偶數值的項進行求和。
答案為:4613732
三、第一遍刷Project Euler
思路:將所有的Fibonacci數列儲存,然後對其偶數值的項進行求和。
python版本程式碼:
# 求Fibonacci數列的函式 def Fibonacci(n): if (n==1): return 1 elif (n==2): return 2 else: return Fibonacci(n-1) + Fibonacci(n-2) # 對偶數值的項求和 def main(max_num): # 找到小於max_num的所有Fibonacci數列 result = [1,2] for i in range(3, max_num): result.append(Fibonacci(i)) if Fibonacci(i) > max_num: result.pop(-1) break # 累加偶數值的項 count = 0 for value in result: if value%2==0: count += values print(count) # 執行程式 if __name__=="__main__": main(4000000)