24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2578  |  回复: 8
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

holmescn

金虫 (正式写手)

[交流] Euler 工程 第二题:Fibonacci数列中小于4百万的偶数的和已有7人参与

前一题仍在征集中,大家要继续想算法啊!

今天帖出第二题:
求Fibonacci数列中所有小于4百万的偶数的和。

Fibonacci数列大家都知道吧,就是兔子数列啊,列出前10项是:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

当然也有第0项是1的写法,不过1不是偶数,不会影响结果的。

这个比上一次的那个有挑战性喔!

别忘了1分钟原则!

[ Last edited by holmescn on 2011-5-12 at 15:08 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 鼓励参与…… 2011-05-14 19:40:51
这个问题不能这么迭代滴!完全可以算出每一个偶数项哒~~~~
诸位请看:
1 2 3 5 8 13 21
这个数列存在两个规则,第一个大家都晓得
An = An-1 + An-2
针对这个问题,存在第二个规则:
奇数+偶数=奇数
偶数+奇数=奇数
奇数+奇数=偶数
奇数+偶数=奇数
偶数+奇数=奇数
这里可以看到,三个数是一个循环,偶数中间穿插了两个奇数。虽然看起来还是需要循环迭代,但是突然想到前阵子sudo提到的循环展开,这灵光就闪现了:
An = An-1 + An-2
An+1 = An + An-1 = An-1 + An-2 + An-1 = 2*An-1 + An-2
An+2 = An+1 + An = 2*An-1 + An-2 + An-1 + An-2 = 3*An-1 + 2*An-2
于是,每个奇数和偶数都可以由前面的规则计算出来。
B1 = 1
C1 = 2
B2 = 2*C1 + B1 = 5
C2 = 3*C1 + 2*B2 = 8
B3 = 2*C2 + B2 = 21
C3 = 3*C2 + 2*B2 = 34
……
漩涡的中心有一块空地,空空的。
7楼2011-05-14 15:17:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见