Skip to content Skip to sidebar Skip to footer

Project Euler #25 Python Why This Wont Work?

I'm trying to solve this problem: The 12th term, F12, is the first term to contain three digits. What is the first term in the Fibonacci sequence to contain 1000 digits? check

Solution 1:

I think you have an error in your code. If you look at the first iteration, you start with i=1 then call

mylst.append(mylst[i-1] + mylst[i-2])  

Which will add mylst[0] + mylst[-1]. This also gives me incorrect answers (for finding the first index with 3 digits, F12. Your code gives me F18).

Obviously this is not what you want to do. You can fix it by changing the list indices you are adding together.

check = True
mylst = [1,1]
i = 1
while check:
    if  len(str(mylst[i])) >= 1000:
        check = False
    else:
        mylst.append(mylst[i] + mylst[i-1])  
        i=i+1

Then, as others have mentioned, you want the index of the answer.

print len(mylst)

Solution 2:

The answer is the index of the fibonacci number, not the number itself.

So, if Fn is the first term in the Fibonacci sequence to contain 1000 digits you need to enter the corresponding n.


Solution 3:

Because the question is what term is the first to contain 1000 digits, not which number. So, if the question was

What is the first term in the Fibonacci sequence to contain 3 digits?

The answer would have been 12, not 144.

A general tip on Project Euler: Read the problem description carefully. And do it at least 3 times. If I had burned one calorie for each minute I've spent troubleshooting a PE problem due to a misread of the problem text, my body would probably be in a healthy shape.


Post a Comment for "Project Euler #25 Python Why This Wont Work?"