#include <iostream>
using namespace std;
int main(int argc, char **argv){
int a, b, maxNum = 1, minNum = 0, div = 1;
scanf("%d %d",&a,&b);
for(int i=2; i <= min(a, b); i++){
if(a % i == 0 && b % i == 0){
maxNum = i;
}
}
printf("%d\n", maxNum);
while(minNum == 0){
if((b * div) % a == 0){
minNum = b * div;
printf("%d", minNum);
}
div++;
}
return 0;
}
두 수의 최대공약수(GCD)를 구하는 알고리즘
그냥 MOD 연산을 반복 수행하면 된다.
int GCD(int a, int b){
int tmp;
while(b){ //b가 0이 될 때까지
tmp = a % b;
a = b;
b = tmp;
}
return a;
}
int GCD(int a, int b){
return b ? GCD(b, a % b) : a;
}
최소공배수(lcm(a,b)) = a * b / gcd(a,b)
int gcd(int a, int b);
int lcm(int a, int b){
return (a * b) / gcd(a, b);
}