`
zhex
  • 浏览: 24740 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

找出1-4000000斐波纳契数列中的奇数和

阅读更多
首先我们知道斐波纳契数列是:
1,2,3,5,8,13 ..........
这个数列中的一个数等于前面两个数的和, 我们可以用一个公式表示:
F(n) = F(n-1) + F(n-2)

有了这个概念我们可以很方便的写出代码:
limit = 4000000
a = 0
b = 1
sum = a + b

while a + b <= limit:
    c = a + b
    a, b = b, c
    if c % 2 != 0:
        sum += c
print sum


现在我们看看是不是还能提高代码的效率
通过观察我们得到的数列,不难发现,所有的奇数和其实就是偶数的和,如果我们把其中所有的偶数提取出来,我们得到的数列是:
2,8,34,144...
发现规律了没有? 这个数列我们用公式 F(n) = F(n-1) *4 + F(n-2) 表示

现在修改我们的代码:
limit = 4000000
a = 0
b = 2
sum = a + b
while a + b <= limit:
    c = a + b * 4
    a, b = b, c
    sum += c
print sum

由于减少了循环次数, 这样效率应该有了提升


分享到:
评论

相关推荐

    scratch项目资源收集

    windows扫雷 源码下载开发环境:scratch 3.20.1 幸运大转盘 源码下载开发环境:scratch 3.20.1 飞机大战 源码下载开发环境:scratch ...找出1-100之间的奇数 源码下载开发环境:scratch 3.20.1 斐波那契数列 源码下载

    浙江大学C语言上机练习题附答案

    20035 求1-1/4+1/7-1/10+……的前n项之和 7 20036 输出华氏-摄氏温度转换表(改错题error02_6) 8 20038 求x的n次幂 9 20041 生成 3 的乘方表 10 20044 求100^0.5+101^0.5+……+1000^0.5 10 20053 计算物体...

    Java面试 Java超级经典100问题 Java高级开发工程师必备 Java面试宝典

    Java面试 Java超级经典100问题 Java高级开发工程师必备 Java面试宝典 1.赋值运算函数.2.单例设计模式.3....找出最小的K个数31.连续子数组的最大和.32.从1到整数n中1出现的次数.33.把数组中的数排成一个最小的数.3

    python编程题+25个Python练习题及详细答案+巩固Python编程的基础知识+适合不同水平的Python开发者

    15. 写一个程序,找出两个列表中的相同元素 16. 写一个程序,找出两个列表中的不同元素 17. 写一个程序,计算一个列表中每个元素的平方 18. 写一个程序,将一个字典中的键和值互换 19. 写一个程序,将一个列表中的...

    《剑指Offer》题目及代码.zip

    9. 斐波那契数列的第n项(青蛙跳台阶) 10. 二进制中1的个数 11. 数值的整数次方 12. 打印1到最大的n位数 13. O(1)时间删除链表节点 14. 使数组中的奇数位于偶数前面 15. 找链表中倒数第K个节点 16. 输出反转后...

    Python案例集锦-0414.docx

    50个程序案例 程序1:数字组合 2 程序2:猜猜这个数是多少? 3 程序3:判断这是一年中的第几天? 3 程序4:判断整数大小 4 ...程序48:找出1000以内的所有完数 42 程序49:公民类 42 程序50:复数类 43

    完整学习笔记:《剑指offer》Java版代码实现

    第九题 斐波那契数列的第n项(青蛙跳台阶) 测试9 第十题 二进制中1的个数 测试10 第十一题 数值的整数次方 测试11 第十二题 打印1到最大的n晚数 测试12 第十三题 O(1)时间删除链表节点 测试13 第十四题 使数据库中...

    front-end-interview-code:一些前端编程题

    code找工作前刷刷题~~~牛客网JS能力测评经典题牛客网前端大挑战获取URL参数DOM节点查找根据包名,在指定空间中创建对象数组去重时间格式化获取字符串长度邮箱字符串判断颜色字符串转换字符串转为驼峰格式字符串字符...

    《数据结构 1800题》

    return f(m.n-1)+f(m-n, (4) ); 郴州都市网 www.0735.cc郴州人才网 www.CZHR.com www.989.org 《数据结构 1800题》 } ②执行程序,f(6,4)= 。 【中科院软件所 1997 二、1 (9分)】 17. 在有 n个选手...

    世界500强面试题.pdf

    1.2.5. 在二元树中找出和为某一值的所有路径 .............................................. 22 1.2.6. Top K 算法详细解析---百度面试 ......................................................... 29 1.2.7. ...

Global site tag (gtag.js) - Google Analytics