为什么我的欧拉计划问题 25 答案是错误的



欧拉项目问题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

最新更新