。
欧拉项目问题25 https://projecteuler.net/problem=25,很简单。要解决的问题是:
斐波那契数列中包含 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