6️⃣🧮 NumPy ufunc (Universal Functions)
Estimated reading: 3 minutes 355 views

NumPy ufunc Finding LCM – Efficiently Compute Least Common Multiples in Arrays

Introduction – Why Use NumPy ufuncs to Find LCM?

Finding the Least Common Multiple (LCM) is essential when working with fractions, integer-based algorithms, modular arithmetic, or synchronization problems. NumPy provides the np.lcm() ufunc to compute the LCM element-wise across arrays quickly and efficiently.

Unlike manual loops or math libraries, NumPy’s lcm() is vectorized, supports broadcasting, and works seamlessly on arrays of any shape.

By the end of this guide, you’ll:

  • Use np.lcm() to compute element-wise least common multiples
  • Apply LCM across arrays, scalars, and matrices
  • Leverage broadcasting and axis-based operations
  • Handle edge cases and type compatibility

Step 1: Basic Element-wise LCM with np.lcm()

import numpy as np

a = np.array([4, 6, 8])
b = np.array([6, 8, 12])

print(np.lcm(a, b))

Output:

[12 24 24]

Explanation:

  • LCM(4,6) = 12
  • LCM(6,8) = 24
  • LCM(8,12) = 24
    Efficient and element-wise

Step 2: LCM with Scalar and Array (Broadcasting)

arr = np.array([3, 5, 7])
print(np.lcm(arr, 10))

Output:

[30 10 70]

Explanation:

  • NumPy broadcasts the scalar 10 across the array
  • Computes [LCM(3,10), LCM(5,10), LCM(7,10)]

Step 3: Multi-Dimensional LCM

A = np.array([[4, 5], [6, 7]])
B = np.array([[6, 10], [8, 21]])

print(np.lcm(A, B))

Output:

[[12 10]
 [24 21]]

Handles 2D arrays element-wise


Step 4: Chaining LCMs with np.lcm.reduce()

arr = np.array([4, 6, 8])
print(np.lcm.reduce(arr))

Output:

24

Explanation:

  • Performs LCM(4, 6) → 12, then LCM(12, 8) → 24
    Useful for finding LCM across an entire array

LCM and GCD Relationship

LCM(a, b) = abs(a × b) / GCD(a, b)

NumPy also provides np.gcd():

print(np.gcd(12, 18))  # 6
print(np.lcm(12, 18))  # 36

Combine both for advanced integer math


Edge Cases and Notes

ScenarioResult
np.lcm(0, n) or np.lcm(n, 0)0 (as per mathematical definition)
Negative inputsOutput is always non-negative
Non-integer inputs Raises TypeError – LCM only supports integer types
Large integers Use dtype=np.int64 to prevent overflow

Bonus: LCM Table (Pairwise Matrix)

x = np.arange(1, 6).reshape(-1, 1)  # Column
y = np.arange(1, 6)                # Row

lcm_table = np.lcm(x, y)
print(lcm_table)

Output:

[[1 2 3 4 5]
 [2 2 6 4 10]
 [3 6 3 12 15]
 [4 4 12 4 20]
 [5 10 15 20 5]]

Creates an LCM table from 1 to 5 × 1 to 5 — useful in math education or algorithm design


Summary – Recap & Next Steps

The np.lcm() ufunc allows you to compute least common multiples with speed and scalability, supporting arrays, broadcasting, and multi-dimensional operations.

Key Takeaways:

  • np.lcm(a, b) → element-wise LCM
  • Use np.lcm.reduce() for entire-array reduction
  • Broadcasting supports scalar-to-array LCM
  • Only supports integer inputs
  • Combine with np.gcd() for complete number theory workflows

Real-world relevance: Used in modular arithmetic, scheduling problems, signal synchronization, and mathematical modeling


FAQs – NumPy LCM ufunc

Can I compute LCM for more than two numbers?
Yes. Use np.lcm.reduce() to compute over an entire array.

Does np.lcm() support negative numbers?
Yes, but it always returns non-negative results.

What happens if one of the inputs is 0?
LCM returns 0, since LCM(0, n) = 0.

Is LCM supported for floats?
No. np.lcm() only supports integers.

Can I use LCM on matrices?
Yes. NumPy applies it element-wise, just like any other ufunc.


Share Now :
Share

NumPy ufunc Finding LCM

Or Copy Link

CONTENTS
Scroll to Top