(1)p=0,q=0 無最大公約數
(2)p=0,q≠0 最大公約數為q
(3)p≠0,q=0 最大公約數為p
(4)p≠0,q≠0 最大公約數可通過輾轉相除取餘數轉化為(2)(3)這樣的情況來求解
//遞迴版,非遞迴用迴圈
public class euclid
public static int euclid(int p,int q)
}else
else
}return euclid(min,r);
}}
//非遞迴
public class euclid
public static int euclid(int p,int q)
else
p=min;
q=r;
}if(p==0&&q==0)
return -1;
else if(p==0)
return q;
else if(q==0)
return p;
return -1; //為了返回值強行加,突然感覺返回值好煩人
}}
輾轉相除法求最大公約數
之前總結過一次高德納taocp中的最大公約數求解,其實課後題中的演算法修改要求實現的是輾轉相除法求解最大公約數。這個題目我最初的理解理解錯了,自然也沒有做出標準答案。現在按照標準答案的解答寫一下相應的 實現 defmaxcommdivisor m,n while m n 0 m m n if m 0...
求最大公約數 輾轉相除法
設求a和b的最大公約數c 則可看做邊長分別為a和b的矩形,可恰好被邊長為c的正方形無縫隙填滿 方法 不斷地用長邊除以短邊取餘數,直到長邊與短邊相等,即為所求正方形 給定平面上的兩個格點p1 x1,y1 p2 x2,y2 線段p1p2上,除p1和p2以外一共有幾個點。示例 p1 3,9 p2 7,1 ...
輾除法求最大公約數 輾轉相除求最大公約數原理
輾轉相除法 並不難,很多人都會寫。public static int f int a,int b return a 舉個例子,例如6,8按照 執行一遍。求最大公約數步驟兩個數的最大公約數是指能同時整除它們的最大正整數。設兩數為a b a b 求a和b最大公約數的步驟如下 1 用a除以b a b 得 ...