diff --git a/maths/factorial_iterative.py b/maths/factorial_iterative.py new file mode 100644 index 000000000000..752f355b8821 --- /dev/null +++ b/maths/factorial_iterative.py @@ -0,0 +1,23 @@ +def factorial_iterative(number: int) -> int: + """ + Return the factorial of a non-negative integer using an iterative method. + + >>> factorial_iterative(5) + 120 + >>> factorial_iterative(0) + 1 + >>> factorial_iterative(1) + 1 + """ + if number < 0: + raise ValueError("Input must be a non-negative integer") + + result = 1 + for i in range(2, number + 1): + result *= i + return result + + +if __name__ == "__main__": + # simple demonstration + print(factorial_iterative(5)) # expected 120 diff --git a/maths/gcd_iterative.py b/maths/gcd_iterative.py new file mode 100644 index 000000000000..3d3cd7d4ab8b --- /dev/null +++ b/maths/gcd_iterative.py @@ -0,0 +1,13 @@ +def gcd_iterative(first_number: int, second_number: int) -> int: + """ + Compute the greatest common divisor (GCD) of two numbers iteratively. + + Examples: + >>> gcd_iterative(48, 18) + 6 + >>> gcd_iterative(7, 5) + 1 + """ + while second_number != 0: + first_number, second_number = second_number, first_number % second_number + return first_number