Why does this C++ code return b instead of r after the loop ends?
Conditions
- The loop condition is `while ()`.
- The variables `a`, `b`, and `r` are updated as `; ; % b;` inside the loop.
Reasoning, step by step
- Trace the loop execution: `r` is calculated as the remainder.
- When `r` becomes 0, the loop exits.
- At this point, `b` contains the value of `r` from the previous iteration (the last non-zero remainder).
- Return `b` to output the greatest common divisor.
Example
The video explains that the loop exits when the remainder first becomes 0, and the `b` returned at this time is exactly the last non-zero remainder, which is the greatest common divisor.
Common misconceptions
- Believing that returning `r` would output the correct greatest common divisor.
- Confusing the roles of `a`, `b`, and `r` during the state updates.
Watch the explanation
Connected concepts
Explore next
Related questions
The Euclidean algorithm moves the old divisor to the left-hand side (new dividend) and the old remainder to the smaller-number position (new divisor) to recursively reduce the problem. This shift ensures that each subsequent division step operates on smaller numbers while preserving the greatest common divisor of the original pair, continuing until a remainder of zero is reached.
Conditions: The algorithm is applied to two positive integers.; The previous remainder is not zero.; The process continues until a remainder of 0 is obtained.
To form the next division line, you take the divisor from the previous line and make it the dividend of the new line. Then, you take the remainder from the previous line and make it the divisor of the new line.
Conditions: You have just completed a division step in the Euclidean algorithm.; The previous remainder is not 0.
To start the Euclidean algorithm for , you write the larger number as the smaller number multiplied by an unknown quotient plus an unknown remainder. Specifically, you set up the division equation .
Conditions: The inputs are positive integers.; The larger number is placed on the left-hand side of the equation.; The quotient is an integer and the remainder satisfies .
To find the greatest common divisor of two large numbers, repeatedly apply the division-with-remainder step. Start by dividing the larger number by the smaller number.
Conditions: The inputs are two positive integers.; The division algorithm is applied at each step.; The process stops when a remainder equals 0.
In the Euclidean algorithm, when the division process yields a remainder of zero, the greatest common divisor of the original two integers is the last non-zero remainder obtained. The algorithm stops at this point because the method is over, and the last non-zero remainder is guaranteed to divide both original numbers evenly.
Conditions: The Euclidean algorithm is applied to two integers.; The process of repeated long division is followed until a remainder of zero is reached.
Answers are generated from source material and independently checked. Consult the original video or creator if something is unclear.