ForHosting KIT · Math

GCD LCM calculator

Enter 12 and 18 and get a GCD of 6 and an LCM of 36, or pass up to 20 numbers in one go. Handy for reducing fractions, finding common denominators and lining up repeating cycles. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Numbers
12, 18
You get
Greatest common divisor
6
Least common multiple
36

Computes the greatest common divisor and least common multiple of an array of 2 to 20 integers, returning the normalized inputs alongside the gcd and lcm.

How the GCD and LCM are computed

The greatest common divisor of two values comes from the Euclidean algorithm — repeatedly replacing (a, b) with (b, a mod b) until b is zero — and the whole-array gcd is that operation applied left to right across every element. The least common multiple of a pair is computed as abs((a / g) * b) where g is their gcd, dividing before multiplying to keep the intermediate value small, and the array lcm is likewise folded across all elements.

If any element is zero the lcm is zero, and an all-zero array is rejected because gcd(0,0) is undefined.

Normalization, limits and safe integers

Each element is first coerced with Math.trunc and Math.abs, so signs and fractional parts are discarded: -12.9 becomes 12 before any math runs, and the normalized values are what appear in the returned numbers array. The array must hold between 2 and 20 elements, every element must be a finite number, and no absolute value may exceed 1e15.

Deterministic arithmetic you can reuse

GCD and LCM underpin everyday tasks: reducing fractions to lowest terms, finding a common denominator, aligning repeating schedules or tiling dimensions, and simplifying ratios. Passing more than two numbers is fully supported — the fold handles up to 20 in one call — so you can reduce an entire set at once instead of chaining pairwise requests.

Fraction and ratio reduction

Reduce fractions or ratios to lowest terms by dividing numerator and denominator by their gcd.

Scheduling alignment

Find when repeating cycles coincide by taking the lcm of their periods across up to 20 values.

What happens to negatives and decimals?

Each value is truncated and made absolute (Math.trunc then Math.abs), so -12.9 becomes 12 before any computation.

How many numbers can I enter at once?

Between 2 and 20. The GCD and LCM are worked out across the whole list in a single pass, so you can reduce an entire set instead of chaining pairs by hand.

What happens if one of the numbers is zero?

The LCM becomes zero, since zero is a multiple of every number. A list made only of zeros is rejected, because the greatest common divisor of zeros is not defined.

How do I use the LCM to see when two schedules line up?

Enter the length of each repeating cycle, for example in days. The LCM is the first point where all of them coincide again, and it works for up to 20 cycles at once.

How do I reduce a fraction with the GCD?

Enter the top and bottom numbers of the fraction and divide both by the GCD you get. The result is the same fraction in lowest terms, and the same trick simplifies a ratio.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/dev/gcd-lcm

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/dev/gcd-lcm \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers":[12,18]}'
{
  "numbers": [
    12,
    18
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.gcd_lcm",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_items20
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

How the GCD and LCM are computed

dev.gcd_lcm takes a numbers array and folds it pairwise. The response returns numbers (the normalized inputs), gcd and lcm, so the example [12, 18] yields a gcd of 6 and an lcm of 36.

Normalization, limits and safe integers

Because LCM grows fast, the result is checked against Number.MAX_SAFE_INTEGER and a computed lcm beyond that range returns a typed invalid_input error rather than a silently wrong float. Any violation — a non-array, too few or too many items, a non-finite entry, an out-of-range magnitude, or an all-zero set — raises invalid_input with a message naming the problem, before or during the fold, so callers get a clean, catchable failure.

Batch number theory

Call the API over many integer sets to append gcd and lcm columns without a local math library.

How many numbers can I pass?

Between 2 and 20 integers per call; the gcd and lcm are folded pairwise across the whole array.

Are there size limits?

No element may exceed 1e15 in magnitude, and an LCM beyond MAX_SAFE_INTEGER returns invalid_input instead of a wrong float.

What if I pass all zeros?

It is rejected: gcd(0,0) is undefined, so an all-zero array returns a typed invalid_input error.

Is it deterministic and free?

Yes. The same array always yields the same result; the browser widget is free and the API bills only successful tasks at $0.002.

Read the full KIT documentation →