c·c++/c 프로그래밍

확장된 유클리트 알고리즘 (gcd 최대공약수) 구하기

바로이순간 2013. 1. 29. 20:20
#include <stdio.h>
int gcd(int a, int b) {
    int c, ax=1, ay=0, bx=0, by=1, cx=0, cy=0;
    c=a%b; 
    cx=ax-a/b*bx; 
    cy=ay-a/b*by;
    while(c!=0) {
        a=b; ax=bx; ay=by;
        b=c; bx=cx; by=cy;
        c=a%b;  cx=ax-a/b*bx; cy=ay-a/b*by;
    }
    printf("x=%d y=%d\n", bx, by);
    return b;
}
int main() {
    int a, b;
    printf("두정수: ");
    scanf("%d%d", &a, &b);
    printf("gcd=%d", gcd(a, b));

    return 0;
}


'c·c++ > c 프로그래밍' 카테고리의 다른 글

진동하는 배너  (0) 2013.04.07
디렉토리 리스팅(윈도우)  (0) 2013.01.31
strtok source  (0) 2012.12.02
연결리스트를 이용한 다항식의 구현  (0) 2012.12.01
2개의 for문을 사용한 별찍기  (0) 2012.11.20