📖 Scenario: You are helping a friend who wants to find the greatest common divisor (GCD) and least common multiple (LCM) of two numbers. These are useful in many real-life situations like sharing items equally or finding common timings.
🎯 Goal: Build a simple C++ program that calculates the GCD and LCM of two given numbers using the Euclidean algorithm.
📋 What You'll Learn
Create two integer variables with exact values 48 and 180
Create a function called gcd that uses the Euclidean algorithm to find the greatest common divisor
Calculate the least common multiple using the formula lcm = (a * b) / gcd(a, b)
Print the GCD and LCM values exactly as shown
💡 Why This Matters
🌍 Real World
Finding GCD and LCM is useful in tasks like dividing items into equal groups, scheduling events, and simplifying fractions.
💼 Career
Understanding Euclidean algorithm and basic number theory is important for software developers working on algorithms, cryptography, and optimization problems.
Progress0 / 4 steps
1
Create two integer variables
Create two integer variables called a and b with values 48 and 180 respectively.
DSA C++
Hint
Use int a = 48; and int b = 180; inside main().
2
Write the gcd function using Euclidean algorithm
Add a function called gcd that takes two integers x and y and returns their greatest common divisor using the Euclidean algorithm.
DSA C++
Hint
The Euclidean algorithm repeatedly replaces the larger number by the remainder of dividing the larger by the smaller until the remainder is zero.
3
Calculate the LCM using the gcd function
Inside main(), create an integer variable called lcm and set it to the value of (a * b) / gcd(a, b).
DSA C++
Hint
Use the formula lcm = (a * b) / gcd(a, b) to calculate the least common multiple.
4
Print the GCD and LCM values
Print the GCD and LCM values using std::cout exactly as: GCD: 12 LCM: 720
DSA C++
Hint
Call gcd(a, b) to get the gcd value, then print both gcd and lcm with the exact text and format.
Practice
(1/5)
1. What does the Euclidean algorithm primarily calculate between two numbers a and b?
easy
A. The difference between the two numbers
B. The Least Common Multiple (LCM)
C. The sum of the two numbers
D. The Greatest Common Divisor (GCD)
Solution
Step 1: Understand the Euclidean algorithm purpose
The Euclidean algorithm is designed to find the greatest common divisor (GCD) of two integers by repeatedly applying the remainder operation.
Step 2: Differentiate GCD from LCM
While GCD finds the largest number dividing both, LCM finds the smallest number divisible by both. The Euclidean algorithm is for GCD.
Final Answer:
The Greatest Common Divisor (GCD) -> Option D
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 is the correct syntax for the base case in a recursive Euclidean algorithm function in C++?
easy
A. if (a == b) return 0;
B. if (a == 0) return b;
C. if (b == 0) return a;
D. if (b == a) return b;
Solution
Step 1: Identify the base case in Euclidean recursion
The base case occurs when the second number b becomes zero, then the GCD is the first number a.
Step 2: Match the correct syntax
The correct syntax is if (b == 0) return a; which stops recursion and returns the GCD.
Final Answer:
if (b == 0) return a; -> Option C
Quick Check:
Base case: b == 0 returns a [OK]
Hint: Base case returns a when b is zero [OK]
Common Mistakes:
Returning 0 instead of a
Checking if a == b instead of b == 0
Swapping a and b incorrectly
3. What is the output of the following C++ code snippet?
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main() {
std::cout << gcd(48, 18);
return 0;
}
medium
A. 6
B. 12
C. 18
D. 3
Solution
Step 1: Apply Euclidean algorithm steps for gcd(48, 18)
Calculate gcd(48, 18): 48 % 18 = 12, so next call gcd(18, 12). Then gcd(18, 12): 18 % 12 = 6, next gcd(12, 6). Then gcd(12, 6): 12 % 6 = 0, next gcd(6, 0).
Step 2: Reach base case and return result
When b=0, return a=6. So gcd(48, 18) = 6.
Final Answer:
6 -> Option A
Quick Check:
gcd(48,18) = 6 [OK]
Hint: Use remainder until zero to find GCD [OK]
Common Mistakes:
Returning 12 instead of 6
Confusing modulo operation
Stopping recursion too early
4. Identify the error in this Euclidean algorithm code snippet:
int gcd(int a, int b) {
if (a == 0) return b;
return gcd(a % b, b);
}
medium
A. The base case condition is incorrect
B. The recursive call parameters are swapped incorrectly
C. Modulo operator is used wrongly
D. No error, code is correct
Solution
Step 1: Check base case correctness
The base case if (a == 0) return b; is valid because when a is zero, gcd is b.
Step 2: Analyze recursive call parameters
The recursive call uses gcd(a % b, b), but Euclidean algorithm requires gcd(b, a % b). The parameters are swapped incorrectly.
Final Answer:
The recursive call parameters are swapped incorrectly -> Option B
Quick Check:
Correct recursion order: gcd(b, a % b) [OK]
Hint: Always call gcd(b, a % b) in recursion [OK]
Common Mistakes:
Swapping parameters in recursive call
Confusing base case condition
Using modulo with wrong variable
5. Given two positive integers 15 and 20, which of the following expressions correctly calculates their Least Common Multiple (LCM) using the Euclidean algorithm for GCD?
hard
A. LCM = (15 * 20) / gcd(15, 20);
B. LCM = gcd(15, 20) / (15 * 20);
C. LCM = gcd(15, 20) * (15 + 20);
D. LCM = (15 + 20) / gcd(15, 20);
Solution
Step 1: Recall the relationship between LCM and GCD
LCM(a, b) * GCD(a, b) = a * b. So LCM = (a * b) / GCD(a, b).