附一篇關於求最大公約數的文章--《c語言實現求最大公約數的三種方法》,可擴展出判斷兩個數是否互質,做題做到。
歐幾里德算法又稱輾轉相除法,是指用於計算兩個正整數a,b的最大公約數。應用領域有數學和計算機兩個方面。計算公式gcd(a,b) = gcd(b,a mod b)。
算法簡介:將兩個數a,b相除,如果余數c不等於0,就把b的值給a,c的值給b,直到c等於0,此時最大公約數就是b
更相減損術是出自《九章算術》的一種求最大公約數的算法,它原本是為約分而設計的,但它適用於任何需要求最大公約數的場合。
算法簡介:將兩個數中較大的數a減去較小的數b,如果差c等於0,那么最大公約數為b,如果不等於0,則將b的值給a,c的值給b,繼續相減直到差等於0。
這兩種算法其實都是運用到了簡化問題的思想。例如更相減損術,比方說A,B兩個數有一個最大公約數m(A>B);則姑且可記為A=ma,B=mb。那么A-B=m(a-b),可以看出A和B
的最大公約數m同時也是B和A-B的最大公約數,依此進行下去,所以數變小了,最大公約數相同,但卻變得越來越簡單了。
最后附一篇關於這兩個算法的生動解釋《漫畫算法:輾轉相除法是什么鬼?》