嘿,我想写一个剧本,把"Fibonacci序列“中所有的偶数都加到4百万以下。
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秒内完成):
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()
发布于 2010-07-17 09:18:00
循环条件是错误的,应该是这样的:
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
发布于 2010-07-17 09:13:36
你确定i
是你想要的不到400万吗?
发布于 2010-07-17 13:55:52
您可能对了解在线集成序列百科全书!感兴趣
您可以按名称或顺序搜索信息。
如果您搜索0,2,8,34或“偶数Fibonacci”,您将被重定向到序列A014445。
在这里你可以找到很多信息,包括公式,
从这一点出发,编写一个生成器来直接生成偶数斐波纳契数是很容易的。
def evenfib():
""" Generates the even fibonacci numbers """
a, b = 2, 0
while True:
a, b = b, a+4*b
yield a
https://stackoverflow.com/questions/3270863
复制相似问题