Java求最大公约数
利用BigInteger里的a.gcd(b)方法求a和b的最大公约数
Scanner scanner = new Scanner(System.in);
BigInteger x = scanner.nextBigInteger();//可以接收int类型
BigInteger y = scanner.nextBigInteger();//也可以利用BigInteger.valueOf()将其他类型转换为BigInteger类型
BigInteger gcd = x.gcd(y); //BigInteger自带的求最大公约数的方法
//BigInteger.valueOf()使用演示
int a = 10;
BigInteger b = BigInteger.valueOf(a);
取两个数中最小,循环递减,都满足整除则为最大公倍数
自定义方法(多个数同样适用)
public static int gcd (int a,int b) {
int min = a<b?a:b;
int gcd = 1;
for (int i = min;i >= 1;i --) {
if (a%i == 0 && b%i == 0) {
gcd = i;
break;
}
}
return gcd;
}
辗转相除法递归实现
public static int gcd (int a,int b) {
if(b==0)
return a;
else
return gcd(b,a%b);
}
辗转相除法while循环实现
public static int gcd (int a,int b) {
int c;
while (b!=0) {
c = a%b;
a = b;
b = c;
}
return a;
}
更相减损术递归实现
public static int gcd (int a,int b) {
if (a==b) {
return a;
} else if (a>b) {
a = a-b;
} else {
b = b-a;
}
return gcd(a, b);
}
更相减损术while循环实现
public static int gcd (int a,int b) {
while (a!=b) {
if (a>b) {
a = a-b;
} else {
b = b-a;
}
}
return a;
}