A를 B로(A > B) 나눈 나머지를 r이라고 할 때, A와 B의 최대공약수는 B와 r의 최대공약수와 같다.
90과 24의 최대공약수는?
1. 90%24 -> 18
2. 24%18 -> 6
3. 18%6 -> 0
최대공약수 = 6
public int GCD(int a, int b) {
if(b == 0) {
return a;
}
return GCD(b, a % b);
}
public int GCD(int a, int b) {
int tmp;
while(b != 0) {
tmp = b;
b = a % b;
a = tmp;
}
return a;
}
두 수의 곱에 최대 공약수를 나눈 값과 같다.
public static int lcm(int a, int b) {
return a * b / gcd(a, b);
}