解题需知原理,背诵来的知识只能支撑一时。
为什么反复执行 a % b ,即可得到最大公约数?(设定前提是a > b)
其中的数学原理就是:a 和 b 的最大公约数 完全等同于 b 和 a%b 的最大公约数,证明在这里:
求得最大公约数 d 以后,比方说:
a = x * d
b = y * d
x 和 y 之间是不可能有公约数的,所以 a 和 b 的最小公倍数就是 x * y * d,也就是 a * b / d。
class HelloJava {
public static void main(String[] args) {
int num1 = 12;
int num2 = 20;
int a = num1 > num2? num1 : num2;
int b = num1 > num2? num2 : num1;
while(b != 0){
int temp = a % b;
a = b;
b = temp;
}
System.out.println("最大公约数是 " + a); // 最大公约数是 4
System.out.println("最小公倍数是 " + num1 * num2 / a); // 最小公倍数是 60
}
}
标签:Java,num1,num2,公倍数,最小,int,最大公约数
From: https://blog.51cto.com/u_13946099/8023607