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:
mateuszz0000 2020-05-25 12:32:57 +02:00 committed by GitHub
parent dc4049ee28
commit bb5552efd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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: while b:
t = b a, b = b, a % b
b = a % b
a = t
return a 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(): def main():
print("GCD(3, 5) = " + str(euclidean_gcd(3, 5))) print(f"euclidean_gcd(3, 5) = {euclidean_gcd(3, 5)}")
print("GCD(5, 3) = " + str(euclidean_gcd(5, 3))) print(f"euclidean_gcd(5, 3) = {euclidean_gcd(5, 3)}")
print("GCD(1, 3) = " + str(euclidean_gcd(1, 3))) print(f"euclidean_gcd(1, 3) = {euclidean_gcd(1, 3)}")
print("GCD(3, 6) = " + str(euclidean_gcd(3, 6))) print(f"euclidean_gcd(3, 6) = {euclidean_gcd(3, 6)}")
print("GCD(6, 3) = " + str(euclidean_gcd(6, 3))) 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__": if __name__ == "__main__":