Bird
Raised Fist0
DSA Typescriptprogramming~20 mins

GCD and LCM Euclidean Algorithm in DSA Typescript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Euclidean Algorithm Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of GCD calculation using Euclidean Algorithm
What is the output of the following TypeScript code that calculates the GCD of two numbers using the Euclidean Algorithm?
DSA Typescript
function gcd(a: number, b: number): number {
  while (b !== 0) {
    const temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

console.log(gcd(48, 18));
A12
B24
C18
D6
Attempts:
2 left
💡 Hint
Remember the Euclidean Algorithm repeatedly replaces the larger number by the remainder until the remainder is zero.
❓ Predict Output
intermediate
2:00remaining
Output of LCM calculation using GCD
What is the output of this TypeScript code that calculates the LCM of two numbers using their GCD?
DSA Typescript
function gcd(a: number, b: number): number {
  while (b !== 0) {
    const temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

function lcm(a: number, b: number): number {
  return (a * b) / gcd(a, b);
}

console.log(lcm(21, 6));
A42
B126
C18
D36
Attempts:
2 left
💡 Hint
LCM can be found by multiplying the numbers and dividing by their GCD.
🧠 Conceptual
advanced
2:00remaining
Why does the Euclidean Algorithm work for GCD?
Which of the following best explains why the Euclidean Algorithm correctly finds the GCD of two numbers?
ABecause it finds the smallest number that divides both numbers without remainder.
BBecause the algorithm multiplies the numbers until they become equal, which is the GCD.
CBecause the GCD of two numbers also divides their difference, so repeatedly replacing the larger number by the remainder preserves the GCD.
DBecause it adds the two numbers repeatedly until the sum is divisible by both numbers.
Attempts:
2 left
💡 Hint
Think about how the remainder relates to the original numbers and their divisors.
🔧 Debug
advanced
2:00remaining
Identify the error in this GCD function
What error will this TypeScript code produce when trying to calculate gcd(10, 5)?
DSA Typescript
function gcd(a: number, b: number): number {
  while (b > 0) {
    const temp = a % b;
    a = b;
    b = temp;
  }
  return a;
}

console.log(gcd(10, 5));
AOutputs 0 incorrectly
BOutputs 5 correctly
CRuns infinitely (infinite loop)
DThrows a TypeError
Attempts:
2 left
💡 Hint
Check the loop condition and the variable updates carefully.
❓ Predict Output
expert
3:00remaining
Output of GCD and LCM for multiple numbers
What is the output of this TypeScript code that calculates the GCD and LCM of an array of numbers?
DSA Typescript
function gcd(a: number, b: number): number {
  while (b !== 0) {
    const temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

function lcm(a: number, b: number): number {
  return (a * b) / gcd(a, b);
}

function gcdArray(arr: number[]): number {
  return arr.reduce((acc, val) => gcd(acc, val));
}

function lcmArray(arr: number[]): number {
  return arr.reduce((acc, val) => lcm(acc, val));
}

const numbers = [12, 15, 20];
console.log({ gcd: gcdArray(numbers), lcm: lcmArray(numbers) });
A{"gcd": 1, "lcm": 60}
B{"gcd": 3, "lcm": 120}
C{"gcd": 5, "lcm": 180}
D{"gcd": 2, "lcm": 240}
Attempts:
2 left
💡 Hint
Calculate GCD and LCM step by step for the array elements.

Practice

(1/5)
1. What does the Euclidean algorithm primarily calculate between two numbers?
easy
A. The difference between the two numbers
B. The Least Common Multiple (LCM)
C. The Greatest Common Divisor (GCD)
D. The sum of the two numbers

Solution

  1. Step 1: Understand the Euclidean algorithm purpose

    The Euclidean algorithm is a method to find the greatest common divisor (GCD) of two integers by repeatedly applying division and remainder operations.
  2. Step 2: Differentiate GCD from LCM

    While GCD finds the largest number dividing both inputs, LCM finds the smallest number divisible by both. The Euclidean algorithm is specifically for GCD.
  3. Final Answer:

    The Greatest Common Divisor (GCD) -> Option C
  4. Quick Check:

    Euclidean algorithm = GCD [OK]
Hint: Euclidean algorithm always finds GCD, not LCM [OK]
Common Mistakes:
  • Confusing GCD with LCM
  • Thinking it calculates sum or difference
  • Assuming it finds prime factors
2. Which of the following TypeScript function signatures correctly defines a function to compute GCD using the Euclidean algorithm?
easy
A. function gcd(a: number, b: number): number
B. function gcd(a: string, b: string): string
C. function gcd(a: number): number
D. function gcd(): void

Solution

  1. Step 1: Check parameter types for GCD function

    GCD requires two numbers as input, so parameters must be two numbers.
  2. Step 2: Check return type

    The function returns a number representing the GCD, so return type must be number.
  3. Final Answer:

    function gcd(a: number, b: number): number -> Option A
  4. Quick Check:

    Two number inputs and number output [OK]
Hint: GCD needs two number inputs and returns a number [OK]
Common Mistakes:
  • Using string types for numeric operations
  • Missing one parameter
  • Returning void instead of number
3. What is the output of the following TypeScript code?
function gcd(a: number, b: number): number {
  while (b !== 0) {
    const temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

console.log(gcd(48, 18));
medium
A. 12
B. 3
C. 18
D. 6

Solution

  1. Step 1: Trace the Euclidean algorithm steps for gcd(48, 18)

    48 % 18 = 12, then gcd(18, 12); 18 % 12 = 6, then gcd(12, 6); 12 % 6 = 0, loop ends, gcd is 6.
  2. Step 2: Confirm final returned value

    The function returns 6 after the loop ends.
  3. Final Answer:

    6 -> Option D
  4. Quick Check:

    GCD(48,18) = 6 [OK]
Hint: Use remainder steps until zero remainder [OK]
Common Mistakes:
  • Returning the wrong variable after loop
  • Confusing modulo operation
  • Stopping too early in the loop
4. Identify the error in this TypeScript function for GCD and fix it:
function gcd(a: number, b: number): number {
  while (a !== 0) {
    const temp = a;
    a = b % a;
    b = temp;
  }
  return b;
}
medium
A. Replace '%' with '/' operator in the loop
B. No error, function works correctly
C. Change 'while (a !== 0)' to 'while (b !== 0)' and swap variables accordingly
D. Change 'return b;' to 'return a;' without other changes

Solution

  1. Step 1: Test the function with example inputs

    Trace gcd(48, 18): starts a=48 b=18 -> a=18 b=48 -> a=12 b=18 -> a=6 b=12 -> a=0 b=6, returns 6 (correct GCD).
  2. Step 2: Verify algorithm correctness

    This is a valid variant of the Euclidean algorithm with swapped roles (gcd(a,b) = gcd(b % a, a)). No syntax/runtime errors, handles edges like gcd(48,0)=48 correctly.
  3. Final Answer:

    No error, function works correctly -> Option B
  4. Quick Check:

    Equivalent Euclidean variant computes correct GCD [OK]
Hint: Non-standard loop condition but correct GCD computation [OK]
Common Mistakes:
  • Assuming loop must check b !== 0
  • Proposing to change return to a (breaks it)
  • Suggesting / instead of %
5. Given two numbers 24 and 36, which of the following TypeScript code snippets correctly calculates their Least Common Multiple (LCM) using the GCD function?
hard
A. const lcm = (a: number, b: number): number => (a * b) / gcd(a, b);
B. const lcm = (a: number, b: number): number => gcd(a, b) / (a * b);
C. const lcm = (a: number, b: number): number => a + b - gcd(a, b);
D. const lcm = (a: number, b: number): number => Math.max(a, b);

Solution

  1. Step 1: Recall the formula relating LCM and GCD

    LCM(a, b) = (a * b) / GCD(a, b). This formula uses the GCD to find the LCM efficiently.
  2. Step 2: Check each code snippet against the formula

    const lcm = (a: number, b: number): number => (a * b) / gcd(a, b); matches the formula exactly. Options B, C, and D do not correctly calculate LCM.
  3. Final Answer:

    const lcm = (a: number, b: number): number => (a * b) / gcd(a, b); -> Option A
  4. Quick Check:

    LCM = (a*b)/GCD(a,b) [OK]
Hint: LCM = product divided by GCD [OK]
Common Mistakes:
  • Dividing GCD by product instead of product by GCD
  • Adding or subtracting instead of dividing
  • Using max instead of LCM formula
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard