Problem 2 : Even Fibonacci numbers

本文解析了 Project Euler 第二题,即求不超过4000000的所有偶数斐波那契数之和的问题,并给出了两种实现方法的代码示例。

Problem:

  1. Each new term in the Fibonacci sequence is generated by adding the previous two terms.By starting with1and2, the first 10 terms will be:
  2. 1,2,3,5,8,13,21,34,55,89,...
  3. By considering the terms in the Fibonacci sequence whose values donot exceed four million, find the sum of the even-valued terms.
 
第二题与斐波那契数列相关,求所有不大于4000000的偶数斐波那契数之和。
 
逐一求斐波那契数,判断后决定是否累加,代码很简单:
 1 #ProjectEuler promble 2: Even Fibonacci numbers
 2 RANGE = 4000000
 3 prev = 1
 4 cur = 1
 5 sum = 0
 6 while cur <= 4000000:
 7     if cur % 2 == 0:
 8         sum += cur
 9     temp = cur
10     cur += prev
11     prev = temp
12 print(sum)

 

 
结束这个问题前,再看看斐波那契数列
1    1    2    3    5    8    13    21    34    ……
a    b    c    a    b    c     a     b      c    ……
 
可见,斐波那契数列偶数项的分布是有规律的,这样可以省略判断是否为偶数的步骤:
 
 1 #ProjectEuler promble 2: Even Fibonacci numbers
 2 RANGE = 4000000
 3 odd1 = 1
 4 odd2 = 1
 5 even = odd1 + odd2
 6 sum = 0
 7 while even <= 4000000:
 8     sum += even
 9     odd1 = odd2 + even
10     odd2 = even + odd1
11     even = odd1 + odd2
12     
13 print(sum)

 

本题结束。
 



转载于:https://www.cnblogs.com/foundkey/p/6071390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值