最大公约数 2.7

两种方法,一种是辗转想减法,可以对辗转相除法中对大数求模而造成的性能瓶颈进行避免

   

但不能避免这种情况 100000000,1

   

第二种用判断奇数偶数,将2的公因子提出来,分为四种情况,xy均为偶数

   

xy其中一个为偶数

   

xy均为奇数,那么x-y就为偶数了

   

package gcd_2_7;

   

public class Gcd_2_7 {

static int gcd(int x,int y){

if (x<y) {

return gcd(y, x);

}

if (y==0) {

return x;

}else {

return gcd(x-y, y);

}

}

static int gcd2(int x,int y){

if (x<y) {

return gcd2(y, x);

}

if (y==0) {

return x;

}else {

if (x%2==0) {

if (y%2==0) {

return (2*gcd2(x/2, y/2));

}

else {

return gcd2(x/2, y);

}

}else {

if (y%2==0) {

return gcd2(x, y/2);

}else {

return gcd2(x-y, y);

}

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(gcd2(6, 8));

}

   

}

原文地址:https://www.cnblogs.com/keedor/p/4409635.html