最大公約數的演算法

aricyoung發表於2008-08-28

== 歐幾里德演算法 ==

1.若a=0,則d:=b、跳至第9步;
2.若b=0,則d:=a、跳至第9步;
3.若a4.d:=a mod b;
5.a:=b;
6.b:=d;
7.若d<0,則跳至第4步;
8.d:=b;
9.結束。

[@more@]== Stein演算法 ==

1.若a=0,則d:=b、跳至第12步;
2.若b=0,則d:=a、跳至第12步;
3.令正整數p:=0;
4.若a和b都是偶數,則a:=a/2、b:=b/2、p:=p+1;
5.若a和b仍都是偶數,則跳至第4步;
6.若a是偶數、b是奇數,則a:=a/2;
7.若a仍是偶數,則跳至第6步;
8.若a是奇數、b是偶數,則b:=b/2;
9.若b仍是偶數,則跳至第8部;
10.若a和b都不是偶數,則a:=b、b:=|a-b|;
11.若b<>0,則跳至第4步;
12.d:=a*exp(2,p);
13.結束。

通常,在面對一般情況時,可以採用歐幾里德演算法,該演算法由於其歷史悠久,更具可讀性且易交流;同時,其效率在很多時候是優於Stein演算法的。而當面對大數運算時,Stein演算法無疑是最佳的選擇。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/787895/viewspace-1009722/,如需轉載,請註明出處,否則將追究法律責任。

相關文章