從網路課程 程式必修課!離散數學與演算法 來淺嚐一下沒機會在課堂上所學的離散數學與演算法。或許對撰寫程式的效能提昇會有些幫助。
課程相關資訊
[連結]:https://hiskio.com/courses/1196/lectures/133743
本篇範圍:Chapter 5
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
Euclidean Algorithm 歐幾里德算法
用來找兩整數的 gratest common divisor (g.c.d.) 最大公因數
想法:
1. 用一個長方形的短邊正方形,盡可能的填入原有的長方形內
2. 剩餘的長方形空間,以其短邊正方形填入,並重複以上動作
3. 直到剩餘的長方形空間,其長寬已經一樣了 (也就是正方形 )。那這個正方形的邊長,就會是兩數的最大公因數
程式碼
1 2 3 4 5 6 7 8 9 10 11 12 |
function gcd(a, b) { while (b !== 0) { const remainder = a % b a = b b = remainder } return a } function gcd(a, b) { return b === 0 ? a : gcd(b, a % b) } |