网站首页 > 文章精选 正文
欧拉计划
欧拉计划是个知名的网站,在任何一种互联网搜索引擎,例如微软的bing,输入project euler能找到它。
以五百年才出现一位的大数学家欧拉冠名的计划,提供了一系列数学相关的计算机编程题。解答每一道题目,不仅需要数学分析,大多数情况下,还要通过计算机编程来完成。对于数学爱好者和程序员,解答欧拉计划列出的题目,对于数学+编程爱好者,是有趣的体验。
欧拉计划第二题
斐波那契数列中的每一项都是前两项的和。我们设初始值为0和1的话,那么第一项等于0 + 1,为1。以此类推。生成的斐波那契数列的前10项为:
1, 2, 3, 5, 8,13, 21, 34, 55, 89,…
考虑该斐波那契数列中不超过四百万的项,求其中为偶数的项之和。
分析
根据问题描述,不难发现偶数项的斐波那契数存在一种规律,即设一个斐波那契数所处的第i位置为 N(i),则i符合如下规则:
当i = 2时,得到偶数项 2。然后往下跳过2项,则第三项必为偶数项,以此类推。这个命题可以通过数学,证明出来。你可以自己试试看能不能推到出来?
算法
凭借上述分析,不难得出简单的一个算法。
- 初始化斐波拉契数,0和1
- 然后每次迭代,得出新的斐波拉契数,同时更新项所属的位置
- 当所属位置正好落在规则上,那么就累加新得到的斐波拉契数
- 当新斐波拉契数小于四百万时,回到步骤2;否则,输出累加值
代码
按照上述算法,用Perl一行搞定。
Bash
perl -E '($fib1, $fib2, $count, $timer, $sum) = (0, 1, 0, 2, 0); while ( ($nextFib = $fib1 + $fib2) < 4000000 ) { ($fib1, $fib2) = ($fib2, $nextFib); ++$count; $sum += ($timer == $count) ? $nextFib : 0; $timer += ($timer == $count) ? 3 : 0 } say $sum'
哇喔。只要你的电脑安装了Perl编程语言,拷贝上述命令,粘贴到终端或者命令行提示,回车运行,即可得到答案。
只要分析到位,算法弄清爽了,写代码实现就是水到渠成。
- 上一篇: 百鸡问题(GESP二级 2023-3 T2)题解思路
- 下一篇: C++编程笔试题(c++编程基础题)
猜你喜欢
- 2025-01-31 电工拆来一个旧PLC练习编程,有密码,怎么清除
- 2025-01-31 初一数学:计算机程序求值第十题(初一程序计算求值问题)
- 2025-01-31 1.21-AI技术每日播报:字节新模型编程自动化,GPT历史题能力欠佳
- 2025-01-31 零基础编程小白的快速上手秘籍(零基础编程入门先学什么)
- 2025-01-31 一文带你了解火花编程|体验分享(火花l2)
- 2025-01-31 课程标准、习题答案配合课件,帮您备课Python程序设计案例教程
- 2025-01-31 C语言编程:最常见 7 道C语言面试题,还是有不少人弄不明白?
- 2025-01-31 最新最全linux c/c++服务器后台开发面试题合集
- 2025-01-31 建议收藏,Python基础编程题100例
- 2025-01-31 IT界公认的Python编程基础习题100道,练完就牛了
- 05-10【锁思想】自旋 or CAS 它俩真的一样吗?一文搞懂
- 05-10盘点JAVA中基于CAS实现的原子类(盘点java中基于cas实现的原子类是什么)
- 05-10Java并发 之 Atomic 原子操作类(java如何实现原子性)
- 05-10JDK源码剖析之AtomicStampedReference和AtomicMarkableReference
- 05-10java并发-AtomicStampedReference
- 05-10Java并发工具:AtomicStampedReference
- 05-1011款常用Java编程软件推荐(建议收藏)
- 05-10优秀程序员必用工具锦集(一款程序员必备的软件)
- 最近发表
-
- 【锁思想】自旋 or CAS 它俩真的一样吗?一文搞懂
- 盘点JAVA中基于CAS实现的原子类(盘点java中基于cas实现的原子类是什么)
- Java并发 之 Atomic 原子操作类(java如何实现原子性)
- JDK源码剖析之AtomicStampedReference和AtomicMarkableReference
- java并发-AtomicStampedReference
- Java并发工具:AtomicStampedReference
- 11款常用Java编程软件推荐(建议收藏)
- 优秀程序员必用工具锦集(一款程序员必备的软件)
- 《若依ruoyi》第一章:本地开发环境搭建
- 软件开发不可错过的6款必备工具(软件 开发工具)
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)