《程式設計師的演算法趣題》-(日)增井敏克 Python解題 -- (Q11)
阿新 • • 發佈:2018-12-14
《程式設計師的演算法趣題》-(日)增井敏克 , 書中為69 道數學謎題編寫了解題程式, 程式語言為:Ruby,JavaScript,C語言。有興趣的同學,可以購書閱讀~
在此更新個人編寫的Python版,僅供學習使用。(執行環境:Python3.6)
Q11 斐波那契數列
斐波那契數列由兩個 1 開端,其後的每一位數字都是前兩位數字之和。譬如 1 和 1 的和為 2, 1 和 2 的和為 3, 2 和 3 的和為 5,3 和 5 的和為 8……一直這樣繼續計算下去,就得到下面這樣的數列。
1,1,2,3,5,8,13,21,34,55,89,… 這個數列就是“斐波那契數列”。
問題
如下例所示,用斐波那契數列中的每個數除以其數位上所有數字之和。請繼續例中的計算,求出後續5 個最小的能整除的數。例) 2 → 2÷2
3 → 3÷3
5 → 5÷5
8 → 8÷8
21 → 21÷3 … 2+1=3,因而除以3
144 → 144÷9 … 1+4+4=9, 因而除以9
Fibonacci_1 = 1 Fibonacci_2 = 1 result_list = [] # 例子包含了6個,繼續求後5例,所以共11個數 while len(result_list) < 11: next_fibonacci = Fibonacci_1 + Fibonacci_2 Fibonacci_1 = Fibonacci_2 Fibonacci_2 = next_fibonacci number_list = [int(i) for i in str(next_fibonacci)] if next_fibonacci % sum(number_list) == 0: result_list.append(next_fibonacci) print("後續5個最小的能整除的數為:{0}".format(result_list[-5:]))
執行結果:
後續5個最小的能整除的數為:[2584, 14930352, 86267571272, 498454011879264, 160500643816367088]