diff --git a/pymbolic/algorithm.py b/pymbolic/algorithm.py
index 207df9d16751f491b8015c5e62e0649bcc4ab3b4..95d1b9673b8d88b6db5bb5900b91a7dbfa332847 100644
--- a/pymbolic/algorithm.py
+++ b/pymbolic/algorithm.py
@@ -27,6 +27,17 @@ def integer_power(x, n, one=1):
 def gcd(q, r):
     return extended_euclidean(q, r)[0]
 
+def gcd_many(*args):
+    if len(args) == 0:
+        return 1
+    elif len(args) == 1:
+        return args[0]
+    else:
+        return reduce(gcd, args)
+
+def lcm(q, r):
+    return abs(q*r)//gcd(q, r)
+