一直有在碰python的我,但有時候碰一下就在忙其他事了,一直期許可以轉職軟體工程師,看來決心還是不夠強大呢! 於是這一篇終於誕生了,我希望藉由紀錄學習過程來督促我這段學習與轉職之旅,累積篇數與解決程式問題的成就,也同時能在我需要的時候回顧當時碰到的問題和不小心忘記的部分。
一直以來數學這個科目我只視其為一種工具,對於應用這種事似乎從來不在意,也沒記住過,一心認為只要解開就好,數學就是這麼回事,但是如果掌握數學邏輯,生活上的某些問題或許很快就能迅速解決,我是這麼想的。
當我面對python練習的時候,我猶感深刻,像我手下在練習基礎練習時,遇到判斷最大公因數的判斷,我就在想就算我會算了,那對於實體應用應該會有什麼幫助吧? 應該說這算出來後在某些情況會派上用場才對吧? 於是我就上網查找,關於這題的應用在於『找出均分的最優解』,例如兩邊男女,人數不同,在分組時確保每組男生數量和女生數量要固定某個數,比如一組有2個男生和3個女生,這時就可以使用找出男女人數的最大公因數求得均分的數字,個別用男生或女生數量除以均分數字,就可以得出一組男生會要多少人,女生多少人。例如男生15人,女生24人,最大公因數為3,男生15除以3得出5人,表示一組5個男生,女生24除以3得出8,表示一組女生8人,並且總共分出3組5男8女的配對。
再來還有是瓷磚的問題,如果家中想要鋪設大面積的磁磚,但不知道要選幾公分的邊長的正方形磁磚才能剛好舖滿地板,這時就可以使用最大公因數。假設面積為672cm x 588cm的地板,找出最大公因數為84,那麼這時你可以挑長寬根據84的因數為長度的磁磚,比如84的因數有: 1,2,3,4,.....28,42,84,可以挑長寬為42公分的磁磚。
這時有了程式碼的快速運算不是挺實用的嗎? 我也想做做看可不可以將這些小功能直接寫在我的手機裡頭,想用的時候就不用苦於慢慢計算公因數了
python應用:
輾轉相除法(找出最大公因數)
def gcd(a, b):
while b:
a, b = b, a % b
return a
def gcd(a,b)為一個函式,會需要輸入a和b兩個數字,以做後續計算。
他的概念是將大數字除以小數字(a 和 b之間)得出餘數,接著將小數字變成新的大數字,再將餘數變成新的小數字,反覆處理直到餘數等於0時,最大的數字就是最大公因數(Greatest Common Divisor, GCD)
例如 a =12, b =16,(12,16)計算過程就是:
16÷12餘數為4 ----> (12,4);
12÷4 餘數為0 ----> (4, 0)這時餘數為0,4就是最大公因數。