Python計算斐波那契數列

來源:互聯網
上載者:User

標籤:python


利用Python計算第一個達到一百萬位元的斐波那契數列各位元之和 結果為4501552


以下是我用到的代碼,不是中間需要一些人工操作來加快收斂性,有興趣讀者可以寫代碼加快收斂

首先執行這個,可以大致確定一百萬個數所在斐波那契序列的位置

i=1j=1k=i+jcount=3while count<4850000:    i=j    j=k    k=i+j    count+=1result=str(k)print('k長度')k_len=len(result)print(k_len)sum=0for item in range(0,len(result)):    sum+=int(result[item])print('k各位元之和')print(sum)file_object = open('python.txt','w')list=[str(i)+'\n',str(j)+'\n',str(k)+'\n',str(k_len)+'\n']file_object.writelines(list)file_object.close()
接下來就是根據上一步的結果,確定向前還是向後

向前的代碼為

input = open('python.txt')i=input.readline()i=i.strip('\n')i=int(i)j=input.readline()j=j.strip('\n')j=int(j)k=input.readline()k=k.strip('\n')k=int(k)print('Read Data end')input.close()count=0while count<4000:    i=j    j=k    k=i+j    count+=1    result=str(k)print('k長度')k_len=len(result)print(k_len)file_object = open('python.txt','w')list=[str(i)+'\n',str(j)+'\n',str(k)+'\n',str(k_len)+'\n']file_object.writelines(list)file_object.close()print('iterator up結束')
向後的代碼為

input = open('python.txt')i=input.readline()i=i.strip('\n')i=int(i)j=input.readline()j=j.strip('\n')j=int(j)k=input.readline()k=k.strip('\n')k=int(k)print('Read Data end')input.close()count=0while count<10:    k=j    j=i    i=k-j    count+=1    result=str(k)print('k長度')k_len=len(result)print(k_len)file_object = open('python.txt','w')list=[str(i)+'\n',str(j)+'\n',str(k)+'\n',str(k_len)+'\n']file_object.writelines(list)file_object.close()print('iterator down結束')
為了查看結果的方便還有一個查看txt內容的代碼

input = open('python.txt')i=input.readline()i=i.strip('\n')print('i的長度')print(len(i))j=input.readline()j=j.strip('\n')print('j的長度')print(len(j))k=input.readline()k=k.strip('\n')print('k的長度')print(len(k))k_len=input.readline()k_len=k_len.strip('\n')k_len=int(k_len)print('資料k長度')print(k_len)result=jsum=0for item in range(0,len(result)):    sum+=int(result[item])print('各位元之和')print(sum)
實驗過程遇到的問題

本問題的關鍵是如果你每次k更新後都判斷k的位元的話,程式會變得特別卡,然而如果僅僅是執行更新k的操作的話程式是執行效率很高的,因此需要減少k位元的計算。然後遇到的問題就是確定第一百萬位斐波那契數列出現的位置,採用二分法的思想。根據每一步的反饋的k的位元,直至找到滿足要求的k.

本實驗還有一個問題就是,因為i,j,k都是位元比較大,所以到最後讀寫txt就變成影響效率的主要因素。由於對python還不是特別瞭解,不知道能不能像matlab那樣,將這些資料不放txt,而放在記憶體中,可以被直接調用的話,程式的效率將會提高的更快。

Python計算斐波那契數列

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.