جواب سوال 25 ProjectEuler: عدد فیبوناچی هزار رقمی 1000

پروژه اویلر

راستش فکر نمی کردم با اولین راه حلم برای سوال 25 پروژه اویلر، به جوابی بهینه برسم! البته مطمئنا راه حل های دیگه ای هم هست که سرعت بالاتری داشته باشه اما سرعت راه حل من که بسیار راضی کننده بود! سوال 25 این هست:

دنباله فیبوناچی با رابطه بازگشتی زیر تعریف می شود:

Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1

از این رو 12 دنباله اول فیبوناچی برابر است با:

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144

دنباله دوازدهم اولین عدد 3 رقمی فیبوناچی است. اندیس اولین عدد هزاررقمی در دنباله فیبوناچی را پیدا کنید.

این هم راه حل من که فکر نمی کنم نیازی به توضیح اضافه باشه:

fib = [1, 1]
i = 1
while len(str(fib[i])) < 1000:
    fib.append(fib[i]+fib[i-1])
    i += 1

print(i+1)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.