일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 큐
- 암호수학
- level13
- 스택
- windosws wbcs
- 시간복잡도
- PHP
- 백준
- SWiFT
- ftz level13
- HTML
- War Game
- 자료구조
- System
- C
- 두근두근 자료구조
- Stack
- Java
- web
- ftz
- pwnable.kr
- 재귀
- 파일 시스템
- 정렬 알고리즘
- 미로 탐색 알고리즘
- windosw 문자열
- c언어
- 파이썬
- OSI
- LoB
Archives
- Today
- Total
나의 기록, 현진록
[C] <암호수학> 확장 유클리드 알고리즘 본문
반응형
확장 유클리드 알고리즘
유클리드 알고리즘이란 두 수의 최대공약수를 구하는 방법이다.
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,0 }; int t[50] = { 0,1 }; 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]*a + t[count]*b, s[count], a, t[count], b); } | cs |
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[C] <BAEKJOON> 백준 1193번 : 분수찾기 (0) | 2020.11.16 |
---|---|
[C] <BAEKJOON> 백준 1712번 : 손익분기점 (0) | 2020.11.16 |
[C] <자료구조> 삽입 정렬 알고리즘 insertion sort 시간 복잡도 (0) | 2018.03.27 |
[C] <자료구조> 선택 정렬 알고리즘 selection sort 시간 복잡도 (0) | 2018.03.27 |
[C] <자료구조> 버블정렬 알고리즘 bubble sort 시간 복잡도 (0) | 2018.03.27 |