一、最大公约数 Greatest Common Divisor(GCD)
正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,例如4和6的最大公约数为2,3和9的最大公约数为3.一般用gcd(a,b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法)
欧几里得算法(辗转相除法)定理
设a、b均为正整数,则gcd(a,b)=gcd(b,a%
比如说gcd(24,18)=gcd(18,6)=gcd(6,0)
众所周知:任意整数和0的公约数是该整数的所有约数;0和任何一个整数a的最大公约数都是a;因为0被所有非0整数整除,所以任意非零的整数都是0的约数
所以gcd(6,0)最大公约数为6,根据欧几里得算法,gcd(24,18)=gcd(6,0)=6
所以24与18的最大公约数为6
public class exercise {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = sc.nextInt();
System.out.println("请输入第二个数:");
int b = sc.nextInt();
int max = 0, min = 0;
for (int i = 2; i <= (a < b ? a : b); i++) {
if (a % i == 0 && b % i == 0) {
max = i;//由于公约数是从小到大,所以循环到最后一个便是最大公约数
}
}
for (int j = a * b; j >= (a > b ? a : b); j--) {
if (j % a == 0 && j % b == 0) {//如果同时除尽两个数,则为公倍数
min = j;//由于公倍数是从大到小,所以循环到最后一个便是最小公倍数
}
}
System.out.println("最大公倍数为:" + max);
System.out.println("最小公倍数为" + min);
}
}