java 中的最大公约数
求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
道理不多说,直接上代码,这里使用的几种常用的方法!
import java.util.Scanner;
public class 最大公约数 {
public static void main(String[] args) {
int a=0,b=0;
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
a=sc.nextInt();
b=sc.nextInt();
System.out.println("欧里几得"+gcd1(a,b));
System.out.println("递归"+gcd(a,b));
}
}
//短除法(个人最喜欢用)
public static int gcd(int x,int y) {
if(x%y==0) return y;
else return gcd(y,x%y);
}
//欧几里得(辗转相除法)
public static int gcd(int a,int b)
{
return b == 0 ? a : gcd(b,a%b);
}
//递归
public static int gcd1(int a,int b)
{
while(b>0)
{
int temp = a%b;
a = b;
b = temp;
}
return a;
}
}
**
拓展 最小公倍数公式为
**
LCM(a ,b) = (a * b) / gcd(a,b)