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;
}