---------------------
在課程的作業中, 看到有學長姊使用了modulo,
好奇之下去搜尋那個到底是啥?
先講結論, 模除就是去取兩數相除的餘數,
也就是Ruby中的 x % y
本來以為這應該是數學系才會學到的東西,
但仔細看看維基的內容, 感覺好像不是, 這應該算是工程學或是應用數學吧......?
所以推測應該資工or資管會學到這個概念......?
在Ruby中, 除了 % 可以求餘數之外,
還有另一個方法是使用modulo指令
modulo指令的使用如下:
原理大概是這樣,
x 除 y 的 餘數 = x - ( 商*y )
( x / y ).floor, 取得的就是商
所以就出現上面那樣的算式
那為什麼不直接用 x % y 就好了?
為啥要搞得那麼複雜呢?
對!! 重點就是, 為啥求個餘數要這麼麻煩?
x % y 這個寫法, 應該只是 x.modulo(y) 的簡化版
推測應該前者是舊版本的寫法, 前者的精簡寫法是版本更新後追加的
而兩者的後台運算法是一樣的
有趣的點是, 可以想想為什麼要這樣算?
可以拿出一個計算機, 試著去按按看, 會發現計算機並沒有提供計算餘數的功能
因為計算餘數對電腦來說, 是無法理解的
能夠透過 x / y 除完之後, 自行去判斷誰是商, 誰是餘, 這個人腦才做的到
電腦是做不到的
電腦只會一直給他除除除除, 直到除盡為止
所以叫電腦去算除法, 它只會回傳給你一個浮點數 (小數)
為了利用電腦來自動化, 時常會需要利用餘數來做一些條件判斷
例如, 判斷奇數? 偶數?
所以才必須要想辦法讓電腦能夠算出餘數
因此工程學或是應用數學, 才必須要去研究 modulo (模除)
經過許多年的發展, 才能出現我們現在使用的 x % y, 如此精簡的指令