-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy patheuclid_gcd.c
35 lines (28 loc) · 847 Bytes
/
euclid_gcd.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
#include <assert.h>
int euclid_gcd(int dividend, int divisor)
{
while (divisor != 0) {
int remainder = dividend % divisor;
dividend = divisor;
divisor = remainder;
}
return dividend;
}
int euclid_gcd_recursive(int dividend, int divisor)
{
return divisor == 0 ? dividend : euclid_gcd_recursive(divisor, dividend % divisor);
}
int main()
{
assert(6 == euclid_gcd(888, 78));
assert(5 == euclid_gcd(45, 25));
assert(2 == euclid_gcd(142, 872));
assert(111 == euclid_gcd(999, 111));
assert(250 == euclid_gcd(4500, 1250));
assert(6 == euclid_gcd_recursive(888, 78));
assert(5 == euclid_gcd_recursive(45, 25));
assert(2 == euclid_gcd_recursive(142, 872));
assert(111 == euclid_gcd_recursive(999, 111));
assert(250 == euclid_gcd_recursive(4500, 1250));
return 0;
}