-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfindGCD.c
77 lines (67 loc) · 1020 Bytes
/
findGCD.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#define A 26
#define B 18
int findGCD(int, int);
int findGCD2(int, int);
int findGCD3(int, int);
int main(void)
{
int result1 = findGCD(A,B);
int result2 = findGCD2(A,B);
int result3 = findGCD3(A,B);
printf("GCD is %d\n", result1);
printf("GCD is %d\n", result2);
printf("GCD is %d\n", result3);
return 0;
}
int findGCD(int a, int b)
{
while(1){
if(a > b)
a -= b;
else if(a < b)
b -= a;
else
return a;
}
}
int findGCD2(int a, int b)
{
while(1){
a %= b;
if(a == 0)
return b;
if(a == 1)
return 1;
b %= a;
if(b == 0)
return a;
if(b == 1)
return 1;
}
}
int findGCD3(int a, int b)
{
while (1) {
if (a > (b * 4)) {
a %= b;
if (a == 0) return b;
if (a == 1) return 1;
}
else if (a >= b) {
a -= b;
if (a == 0) return b;
if (a == 1) return 1;
}
if (b > (a * 4)) {
b %= a;
if (b == 0) return a;
if (b == 1) return 1;
}
else if (b >= a) {
b -= a;
if (b == 0) return a;
if (b == 1) return 1;
}
}
}