Skip to content

Commit bb5552e

Browse files
authored
Euclidean recursive method + doctests + type hints (TheAlgorithms#1999)
* Recursive euclidean algorithm + doctests and type hints * Fix doctests in recursive method * Added commit suggestions
1 parent dc4049e commit bb5552e

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

other/euclidean_gcd.py

+36-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,46 @@
1-
# https://en.wikipedia.org/wiki/Euclidean_algorithm
1+
""" https://en.wikipedia.org/wiki/Euclidean_algorithm """
22

33

4-
def euclidean_gcd(a, b):
4+
def euclidean_gcd(a: int, b: int) -> int:
5+
"""
6+
Examples:
7+
>>> euclidean_gcd(3, 5)
8+
1
9+
10+
>>> euclidean_gcd(6, 3)
11+
3
12+
"""
513
while b:
6-
t = b
7-
b = a % b
8-
a = t
14+
a, b = b, a % b
915
return a
1016

1117

18+
def euclidean_gcd_recursive(a: int, b: int) -> int:
19+
"""
20+
Recursive method for euclicedan gcd algorithm
21+
22+
Examples:
23+
>>> euclidean_gcd_recursive(3, 5)
24+
1
25+
26+
>>> euclidean_gcd_recursive(6, 3)
27+
3
28+
"""
29+
return a if b == 0 else euclidean_gcd_recursive(b, a % b)
30+
31+
1232
def main():
13-
print("GCD(3, 5) = " + str(euclidean_gcd(3, 5)))
14-
print("GCD(5, 3) = " + str(euclidean_gcd(5, 3)))
15-
print("GCD(1, 3) = " + str(euclidean_gcd(1, 3)))
16-
print("GCD(3, 6) = " + str(euclidean_gcd(3, 6)))
17-
print("GCD(6, 3) = " + str(euclidean_gcd(6, 3)))
33+
print(f"euclidean_gcd(3, 5) = {euclidean_gcd(3, 5)}")
34+
print(f"euclidean_gcd(5, 3) = {euclidean_gcd(5, 3)}")
35+
print(f"euclidean_gcd(1, 3) = {euclidean_gcd(1, 3)}")
36+
print(f"euclidean_gcd(3, 6) = {euclidean_gcd(3, 6)}")
37+
print(f"euclidean_gcd(6, 3) = {euclidean_gcd(6, 3)}")
38+
39+
print(f"euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3, 5)}")
40+
print(f"euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5, 3)}")
41+
print(f"euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1, 3)}")
42+
print(f"euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3, 6)}")
43+
print(f"euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6, 3)}")
1844

1945

2046
if __name__ == "__main__":

0 commit comments

Comments
 (0)