record logo record

목차

유클리드 호제법(알고리즘)이란?

원리

//==반복문을 이용한 GCD==//
int gcd(int a, int b) {
    int tmp;
    if(a<b) { // a에 큰값을 위치 시킨다.
        tmp = a;
        a = b;
        b = tmp;
    }
    int m;
    while(b != 0) { // 유클리드(GCD) 알고리즘
        m = a % b;
        a = b;
        b = m;
    }
    return a;
}

//==재귀을 이용한 GCD==//
int gcd(int a, int b) {
    if(b == 0) {
        return a;
    } else {
        return gcd(b, a%b);
    }
}

최소 공배수(LCM)

//==최대 공약수 GCD==//
int gcd(int a, int b) {
    int tmp;
    if(a<b) { // a에 큰값을 위치 시킨다.
        tmp = a;
        a = b;
        b = tmp;
    }
    int m;
    while(b != 0) { // 유클리드(GCD) 알고리즘
        m = a % b;
        a = b;
        b = m;
    }
    return a;
}

//==최소 공배수 LCM==//
int lcm(int a, int b) {
    return (a * b) / gcd(a, b);
}