|
1 |
| -# https://en.wikipedia.org/wiki/Euclidean_algorithm |
| 1 | +""" https://en.wikipedia.org/wiki/Euclidean_algorithm """ |
2 | 2 |
|
3 | 3 |
|
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 | + """ |
5 | 13 | while b:
|
6 |
| - t = b |
7 |
| - b = a % b |
8 |
| - a = t |
| 14 | + a, b = b, a % b |
9 | 15 | return a
|
10 | 16 |
|
11 | 17 |
|
| 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 | + |
12 | 32 | 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)}") |
18 | 44 |
|
19 | 45 |
|
20 | 46 | if __name__ == "__main__":
|
|
0 commit comments