项目欧拉问题25 https://projecteuler.net/problem=25,非常简单。要解决的问题是:
Fibonacci序列中包含1000位数的第一项的索引是多少?
但我的回答是错的,我无法弄清楚为什么。
这不可能更简单,我得到了错误的答案
def fib_gen(i=1, j=1):
yield 1
yield 1
while 1:
i, j = i+j, i
yield i
for i, f in enumerate(fib_gen()):
if f < (10**1000):
pass
else:
if f > (10**1000-1):
print(i+1, f)
break
我的回答是4787
正确答案4782,我想。
更新没关系。我想出10 ** 1000是1001位数
如果你使用if f > (10**(1000-1)):
,你会得到4782。
试试这个: -
def fib(limit):
var, var1,l = 0,1,0
for i in range(limit):
ph = var1
var1, var = var+var1, ph
l = ph
return l
counter = -1
while 1:
counter += 1
v = fib(counter)
if len(str(v)) == 1000:
print(counter)
break
# output: 4782