# Application: Algorithms - PowerPoint PPT Presentation

1 / 21

Application: Algorithms. Lecture 20 Section 3.8 Wed, Feb 21, 2007. Greatest Common Divisors. Let a and b be integers that are not both 0. The greatest common divisor of a and b , denoted gcd( a , b ), is the unique positive integer d with the following properties:

## Related searches for Application: Algorithms

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Application: Algorithms

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

## Application: Algorithms

Lecture 20

Section 3.8

Wed, Feb 21, 2007

### Greatest Common Divisors

• Let a and b be integers that are not both 0.

• The greatest common divisor of a and b, denoted gcd(a, b), is the unique positive integer d with the following properties:

• d | a and d | b.

• For every integer c, if c | a and c | b, then c | d.

### Least Common Multiples

• Let a and b be nonzero integers.

• The least common multiple of a and b, denoted lcm(a, b), is the unique positive integer m with the following properties:

• a | m and b | m.

• For every integer c, if a | c and b | c, then m | c.

### The High-school gcd Algorithm

• The high-school method is very inefficient.

• Factor each number into standard form.

• For each prime that appears in both factorizations, use it as a factor of the gcd along with the smaller of the two exponents.

### Example

• Find the gcd of 81900 and 54810.

• We factor them as

• 81900 = 22 32 52 71 131  290

• 54810 = 21 33 51 71 130  291

• Therefore, the gcd is

• 2  32 5  7 = 630

### The Euclidean Algorithm

• Factoring is inefficient; therefore, this algorithm is inefficient.

• The run time of this algorithm is O(10d), where d is the number of digits in the number.

• Euclid had a much better idea.

• The run time of the Euclidean Algorithm is O(d), where d is the number of digits in the number.

### The Euclidean Algorithm

• Input: A, B (positive integers, not both 0)

### The Euclidean Algorithm

• Algorithm body:

• Output: b

a := A

b := B

ifb = 0 then

swap a and b

r := a mod b

whiler > 0

a := b

b := r

r := a mod b

end while

### Example

• Apply the Euclidean Algorithm to A = 81900 and B = 54810.

### Example

• Apply the Euclidean Algorithm to A = 81900 and B = 54810.

### Example

• Apply the Euclidean Algorithm to A = 81900 and B = 54810.

### Example

• Find the gcd of 1098011 and 1033133.

### Least Common Multiples

• What is the efficient way to find lcm’s?

• What is the lcm of 1098011 and 1033133?

### Proof of the Euclidean Algorithm

• Theorem: The Euclidean Algorithm terminates for all legitimate inputs A and B.

• Proof:

• We may assume that B > 0.

• After the first iteration of the while loop,

0  b < B

since b is the remainder of A divided by B.

### Proof of the Euclidean Algorithm

• Each iteration produces a nonnegative remainder that is smaller than the previous remainder.

• This cannot happen more than B times before the remainder is 0.

### Proof of the Euclidean Algorithm

• Lemma 1: If b > 0, then gcd(b, 0) = b.

• Proof:

• b | b and b | 0.

• For all integers c, if c | 0 and c | b, then c | b.

• Therefore, b = gcd(b, 0).

### Proof of the Euclidean Algorithm

• Lemma 2: If a and b are integers, with b 0, and q and r are integers such that

a = qb + r

then gcd(a, b) = gcd(b, r).

• Proof:

• Let d = gcd(b, r).

• Then d | b and d | r and any integer that divides b and r must also divide d.

### Proof of the Euclidean Algorithm

• We must show that d | a and d | b and any integer that divides a and b must also divide d.

• We already know that d | b.

• Since a = qb + r, it follows that d | a.

• Let c be an integer such that c | a and c | b.

• Since r = a – qb, it follows that c | r and so c | d.

• Therefore, d = gcd(a, b).

### Proof of the Euclidean Algorithm

• Theorem: The Euclidean Algorithm produces the gcd of A and B.

• Proof:

• After the final iteration of the while loop, r = 0.

• By Lemma 1, the output b is the gcd of b and r, i.e., b = gcd(b, 0).

• By Lemma 2, that is equal to the gcd of “a” and “b”in the final iteration.

### Proof of the Euclidean Algorithm

• But “a” and “b” on the last iteration were “b” and “r” on the previous iteration.

• Therefore, gcd(a, b) on the last iteration equals gcd(b, r) on the previous iteration, which equals gcd(a, b) on the previous iteration, and so on.

• Following this argument all the back to the first iteration, we see that the output is gcd(A, B).

### Proof of the Euclidean Algorithm

• In the next chapter, we will study mathematical induction.

• At that point, we will be able to make this argument more rigorous.