CS/손코딩

최대공약수 / 최소공배수

졔졔311 2023. 6. 21. 20:52
728x90
반응형

GCD를 구할 때에는 유클리드 알고리즘을 사용한다.

두 자연수 a, b에 대해 (a > b)

a를 b로 나눈 나머지 n이 0이면 b가 GCD이다.

n이 0이 아니면,

a = b; b = n;으로 대입한 뒤 다시 반복한다.

 

int gcd(int a, int b){
    if(b == 0){
        return a;
    }
    else{
        return gcd(b, a%b);
    }
}
int gcd(int a, int b){
    // a가 b보다 큰 값으로 만듦.
    if(a < b){
    	int tmp = a;
        a = b;
        b = tmp;
    }
    
    // 반복문으로 구현한 유클리드 알고리즘
    while(b != 0){
    	int n = a%b;
        a = b;
        b = n;
    }
    return a;
}

 

LCM을 구할 때에도 유클리드 호제법을 이용한다.

자연수 a와 b에 대해,

LCM = a*b / gcd(a, b)를 만족한다.

728x90
반응형

'CS > 손코딩' 카테고리의 다른 글

[정렬] Heap Sort  (0) 2023.06.21
[정렬] Quick Sort  (1) 2023.06.21
[정렬] Merge Sort  (0) 2023.06.21
[정렬] Insertion Sort  (0) 2023.06.21
[정렬] Selection Sort  (0) 2023.06.21