歐幾里得算法:
又名輾轉相除法,歐幾里德算法是用來求兩個非負整數最大公約數的算法。
其計算原理依賴的定理:兩個非負整數的最大公約數等於其中較小的那個數和兩數相除餘數的最大公約數。
其具體計算方法爲:用兩數中的較大數p除以較小數q,再用出現的餘數r1去除除數q,再用出現的餘數r2去除餘數r1,如此反覆,直到最後餘數是0爲止,最後的除數就是這兩個數的最大公約數。
舉例說明:利用歐幾里得算法求兩非負整數1071
和462
的最大公約數:
第一步:1071 / 462 = 2
······147
第二步:462 / 147 = 3
······21
第三步:147 / 21 = 7
······0
所以,21
即爲兩數的最大公約數。
Java代碼實現:
public static int gcd(int p,int q) {
if(q==0)
return p;
int r=p%q;
return gcd(q,r);
}