概念
欧几里得算法是一种用于计算两个整数的最大公约数(GCD)的算法。它基于欧几里得定理,即两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。欧几里得算法是一种非常高效的算法,可以快速地计算两个整数的最大公约数。
代码实现
public class Main {
public static void main(String[] args) {
int num1 = 48, num2 = 64;
System.out.println("The GCD of " + num1 +" and " + num2 + " is " + gcd(num1, num2));
}
public static int gcd(int num1, int num2) {
if (num2 == 0) {
return num1;
}
return gcd(num2, num1 % num2);
}
}
证明
有数字a、b,求其最大公约数。
1、如果a比b大,那么可以表示为:a = bq + r => r = a - bq。 r为a与b的余数。
2、假设最大公约数是d,那么a = md,b=nd。
3、r / d = (a - qb) / d = m - nq 其中m-qn是一个常数,说明a与b的余数也一定是最大公约数的倍数
4、通过i次递归,最终得到余数为0。
为0,说明此时
为
的倍数,同时他们本身也是最大公约数的倍数,
即为最大公约数。