나의 기록, 현진록

[C] <암호수학> 확장 유클리드 알고리즘 본문

Programming/Algorithm & Data Structure

[C] <암호수학> 확장 유클리드 알고리즘

guswlsdk 2018. 4. 2. 16:35
반응형

확장 유클리드 알고리즘



유클리드 알고리즘이란 두 수의 최대공약수를 구하는 방법이다.









1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
void main() {
    int a, b;
    int r, r1, r2, q[50= {0};
    int s[50= { 1,};
    int t[50= { 0,};
    printf("a, b = ? ");
    scanf("%d %d"&a, &b);
    r = a;
    r1 = b;
    int count = 0;
    while (r1 >= 1) {
        q[count+1= r / r1;
        r2 = r%r1;
        if (count >= 2) {
            s[count] = s[count - 2- q[count-1]*s[count - 1];
            t[count] = t[count - 2- q[count-1]*t[count - 1];
        }
        printf("%4d = %4d * %4d + %4d\t", r, q[count+1], r1, r2);
        printf("s= %d        t= %d\n", s[count], t[count]);
        r = r1;
        r1 = r2;
        count++;
    }
    s[count] = s[count - 2- q[count - 1* s[count - 1];
    t[count] = t[count - 2- q[count - 1* t[count - 1];
    printf("gcd = %d = %d * %d + %d * %d\n", s[count]*+ t[count]*b, s[count], a, t[count], b);
}
cs
















반응형