mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-20 00:02:04 +00:00
Euclidean recursive method + doctests + type hints (#1999)
* Recursive euclidean algorithm + doctests and type hints * Fix doctests in recursive method * Added commit suggestions
This commit is contained in:
parent
dc4049ee28
commit
bb5552efd0
|
@ -1,20 +1,46 @@
|
|||
# https://en.wikipedia.org/wiki/Euclidean_algorithm
|
||||
""" https://en.wikipedia.org/wiki/Euclidean_algorithm """
|
||||
|
||||
|
||||
def euclidean_gcd(a, b):
|
||||
def euclidean_gcd(a: int, b: int) -> int:
|
||||
"""
|
||||
Examples:
|
||||
>>> euclidean_gcd(3, 5)
|
||||
1
|
||||
|
||||
>>> euclidean_gcd(6, 3)
|
||||
3
|
||||
"""
|
||||
while b:
|
||||
t = b
|
||||
b = a % b
|
||||
a = t
|
||||
a, b = b, a % b
|
||||
return a
|
||||
|
||||
|
||||
def euclidean_gcd_recursive(a: int, b: int) -> int:
|
||||
"""
|
||||
Recursive method for euclicedan gcd algorithm
|
||||
|
||||
Examples:
|
||||
>>> euclidean_gcd_recursive(3, 5)
|
||||
1
|
||||
|
||||
>>> euclidean_gcd_recursive(6, 3)
|
||||
3
|
||||
"""
|
||||
return a if b == 0 else euclidean_gcd_recursive(b, a % b)
|
||||
|
||||
|
||||
def main():
|
||||
print("GCD(3, 5) = " + str(euclidean_gcd(3, 5)))
|
||||
print("GCD(5, 3) = " + str(euclidean_gcd(5, 3)))
|
||||
print("GCD(1, 3) = " + str(euclidean_gcd(1, 3)))
|
||||
print("GCD(3, 6) = " + str(euclidean_gcd(3, 6)))
|
||||
print("GCD(6, 3) = " + str(euclidean_gcd(6, 3)))
|
||||
print(f"euclidean_gcd(3, 5) = {euclidean_gcd(3, 5)}")
|
||||
print(f"euclidean_gcd(5, 3) = {euclidean_gcd(5, 3)}")
|
||||
print(f"euclidean_gcd(1, 3) = {euclidean_gcd(1, 3)}")
|
||||
print(f"euclidean_gcd(3, 6) = {euclidean_gcd(3, 6)}")
|
||||
print(f"euclidean_gcd(6, 3) = {euclidean_gcd(6, 3)}")
|
||||
|
||||
print(f"euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3, 5)}")
|
||||
print(f"euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5, 3)}")
|
||||
print(f"euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1, 3)}")
|
||||
print(f"euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3, 6)}")
|
||||
print(f"euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6, 3)}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue
Block a user