今天一次無意的思考中想起了最大公約數(shù),想一下最大公約數(shù)的算法,第一反映是窮舉,然后是短除,再
之后就想不到別的了,但是在模糊記憶中還應改有個別的,于是翻來覆去的想,忽然好像有個腳歐幾里得
算法的東西,但具體內容全部和飯一起吃了,哎!google一下,發(fā)現(xiàn)果然是這個。實現(xiàn)方式
?窮舉
?public static int getNumOne(int m,int n){
??int num=Math.abs(m-n);
??if (num > m){
???num=m;
??}
??if(num >n){
???num=n;
??}
??for(int i=num;i>0;i--){
???if(m%i==0 && n%i==0){
????num=i;
????break;
???}
??}
??return num;
?}
?歐幾里得
?public static int getNumTwo(int m,int n){
??int num=1;
??if(m>n){
???num=getNumTwo(m-n,n);
??}else if(m<n){
???num=getNumTwo(n-m,m);
??}else if(m==n){
???num=n;
??}
??return num;
?}
?改進算法
?public static int getNumThree(int m,int n){
??int num=1;
??while(num>0){
???num=m%n;
???m=n;
???n=num;
??}
??return m;
?}