ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유클리드 알고리즘(GCD) c++ 코드
    알고리즘/C++ 2018. 11. 20. 17:23
    반응형

    유클리드 알고리즘란?

     

    - 주어진 사이에 존재하는 최대 공약수(GCD) 구하는 알고리즘

     

    작동 원리


    자연수 x, y 주어질때 큰값이 x라고 하면

    x y 나눠 나머지가 0 아니면 x y 바꾼뒤 나머지가 0일때까지 계속 반복

    x y 나눈 나머지가 0일때 y 최대 공약수


    두가지 풀이 방법이 있다. 

    while 문 이용 하는법 과 재귀 함수 이용하는 방법


    문제 예시

    16과 12의 최대 공약수를 구하라


    풀이 1 : while 문 이용

    C++ 소스 코드

    #include <iostream>

    int gcd(int x, int y){

        int temp;

        if(x<y){

            temp = x;

            x= y;

            y = temp;

        }

        int rest;

        while(y!=0){

            rest = x%y;

            x = y;

            y = rest;

        }

        return x;

    }

    int main(){

        int x = 16;

        int y = 14;

        int result;

        result = gcd(x,y);

        std::cout << result;

        return 0;

    }


    풀이 2 : 재귀 함수 이용

    C++ 소스 코드

    #include <iostream>

    int gcd(int x, int y){

        if(y == 0){

            return x;

        } else {

            return gcd(y, x%y);

        }

    }


    int main(){

        int x = 16;

        int y = 14;

        int result;

        result = gcd(x,y);

        std::cout << result;

        return 0;

    }


    반응형

    댓글

Designed by Tistory.