首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >4百万以下的斐波纳契

4百万以下的斐波纳契
EN

Stack Overflow用户
提问于 2010-07-17 08:52:00
回答 9查看 3.7K关注 0票数 4

可能重复: Python程序查找fibonacci系列。更多的毕达通的方式。

嘿,我想写一个剧本,把"Fibonacci序列“中所有的偶数都加到4百万以下。

代码语言:javascript
运行
复制
Fibonacci1 = 1
Fibonacci2 = 2
a = 2
i = 4
for i in range(1,4000000):
 Fibonacci1 = Fibonacci1 + Fibonacci2
 if Fibonacci1 % 2 == 0:
  a = a + Fibonacci1
 Fibonacci2 = Fibonacci1 + Fibonacci2
 if Fibonacci2 % 2 == 0:
  a = a + Fibonacci2
print a
raw_input()

它应该花不到一分钟,但它花了一整晚,但它没有解决!

编辑:对不起,伙计们,我误解了问题。我想这意味着我必须把所有的偶数条件加到400万!但解决办法是将所有偶数条件加到400万。

工作代码(在不到1秒内完成):

代码语言:javascript
运行
复制
Fibonacci1 = 1
Fibonacci2 = 2
a = 2
while a < 4000000:
 Fibonacci1 = Fibonacci1 + Fibonacci2
 if Fibonacci1 % 2 == 0:
  a = a + Fibonacci1
 Fibonacci2 = Fibonacci1 + Fibonacci2
 if Fibonacci2 % 2 == 0:
  a = a + Fibonacci2
print a
raw_input()
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-07-17 09:18:00

循环条件是错误的,应该是这样的:

代码语言:javascript
运行
复制
while True:
    Fibonacci1 = Fibonacci1 + Fibonacci2
    if Fibonacci1 % 2 == 0:
        if a + Fibonacci1 > 4000000:
            break
        a = a + Fibonacci1
    Fibonacci2 = Fibonacci1 + Fibonacci2
    if Fibonacci2 % 2 == 0:
        if a + Fibonacci2 > 4000000:
            break
        a = a + Fibonacci2
票数 2
EN

Stack Overflow用户

发布于 2010-07-17 09:13:36

你确定i是你想要的不到400万吗?

票数 3
EN

Stack Overflow用户

发布于 2010-07-17 13:55:52

您可能对了解在线集成序列百科全书!感兴趣

您可以按名称或顺序搜索信息。

如果您搜索0,2,8,34或“偶数Fibonacci”,您将被重定向到序列A014445

在这里你可以找到很多信息,包括公式,

从这一点出发,编写一个生成器来直接生成偶数斐波纳契数是很容易的。

代码语言:javascript
运行
复制
def evenfib():
    """ Generates the even fibonacci numbers """
    a, b = 2, 0
    while True:
        a, b = b, a+4*b
        yield a  
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3270863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档