偽**:
stein演算法(假設0<=br←0
while b>0
do if a偶,b偶 then a←a>>1 b←b>>1 r←r+1
else if a偶,b奇 then a←a>>1
else if a奇,b偶 then b←b>>1
else if a奇,b奇 then a←(a-b)>>1
if areturn a<
unsigned maxdivisor(unsigned a, unsigned b)
else
if(!(a & 1) && (b & 1))
//a偶 b奇
else
if((a & 1) && !(b & 1))
//a奇 b偶
else
if((a & 1) && (b & 1))
//a,b都是奇數
} }
1.a,b均為偶,明顯有公約數2
2.a,b奇偶性不同,則偶數的2可以去掉,因為不可能和奇數有公約數
3.a,b均為奇,此時可能有奇數的公約數
a = k * x,b = k* y (k為奇)
a = a - b = k * (x - y)
不斷減小其他因子,直到最後a = b,相減a = 0,則b為k,再左移(即乘上之前的2^c)
最大公約數簡便演算法 最大公約數演算法
1 查詢約數法 先分別找出每個數的所有約數,再從兩個數的約數中找出公有的約數,其中最大的乙個就是 最大公約數 例如,求 12 和 30 的最大公約數 12 的約數有 1 2 3 4 6 12 30 的約數有 1 2 3 5 6 10 15 30 12 和 30 的公約數有 1 2 3 6,其中 6 ...
求最大公約數
最新用了三種演算法實現了求最大公約數的演算法,用的c 寫的,最大公約數也是我們生活中常見的問題 1 窮舉法 主要 如下 if a b for i 1 i a i 演算法分析 窮舉法先將a,b兩值比較大小並且互換,再進行與各種數的整除,如果這個數能同時被a,b整除,那麼這個數就為最大公約數,這種演算法...
求最大公約數
暴力列舉法很簡單,從較小整數的一班開始,試圖找到乙個合適的整數i,檢查這個整數i是否被a和b同時整除 暴力列舉法求最大公約數 param a param b return public static int getgreatestcommondivisor v1 int a,int b for in...